簡體   English   中英

服務器接受更多客戶端TCP C#

[英]Server accepting more clients TCP C#

我正在嘗試使TCP服務器與“多個” TCP客戶端連接。

我的項目基本上是2個應用程序,其設計類似於3層模型。 在每個應用程序的數據層中,我需要一個套接字連接,因此我可以將數據(字符串值)從一個應用程序發送到另一個應用程序。 因為我在邏輯層中想通過套接字連接(基本上是相同的客戶端)發送多種方法,所以我的TCP服務器存在問題-它僅接受一個TCP客戶端(出於某種原因,我不知道) 。

我是否需要某種循環,所以我的服務器不會關閉連接?

我對TCP編程非常陌生,因此我很高興獲得一些幫助來進行我的項目。

這是我的TCP客戶端的代碼:

public class Tx_Data
{
    const int PORT = 9000;

    private TcpClient clientSocket;

    public Tx_Data()
    {
        Console.WriteLine("Client startet");
        clientSocket = new TcpClient();
        clientSocket.Connect("192.168.122.169", 9000);
        Console.WriteLine("Forbindelse oprettet");
    }

    public void sendDataTCP(string puls, string QT, string QTc)
    {
        NetworkStream outToServer = clientSocket.GetStream();
        string line = "Puls: " + puls + ", QT: " + QT + ", QTc: "+ QTc;
        LIB.writeTextTCP(outToServer, line);
        outToServer.Flush();
    }

}

當我在我的邏輯層方法之一中調用sendDataTCP方法時,它看起來像這樣:

  public void sendData()
    {
        Tx_Data tD = new Tx_Data();
        string puls = beregnPuls().ToString();
        string QT = beregn_QT().ToString();
        string QTc = beregn_QTC().ToString();
        tD.sendDataTCP(puls,QT,QTc);
    }

我的接收數據的TCP服務器看起來像這樣的atm:

  public class Rx_Alarm
{

    const int PORT = 9000;

    public Rx_Alarm()
    {
        TcpListener serverSocket = new TcpListener(IPAddress.Any, 9000);
        TcpClient clientSocket = default(TcpClient);
        serverSocket.Start();
        clientSocket = serverSocket.AcceptTcpClient();
        Console.WriteLine(">> Accept connection from client");


        NetworkStream io = clientSocket.GetStream();
        Console.WriteLine(LIB.readTextTCP(io));
    }
}

我不了解TCPListeners,但使用老式的套接字編程。 您可以創建服務器代碼並告訴它要聽多少個客戶端

enter code here

var socListener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
    var ipLocal = new IPEndPoint ( IPAddress.Any ,##Port Number##);
    //bind to local IP Address...
    socListener.Bind( ipLocal );
    //start listening...
    socListener.Listen (4); // where 4 is the number of clients to listen simultaneously
    // create the call back for any client connections...
    socListener.BeginAccept(new AsyncCallback ( OnClientConnect ),null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM