0

我正在尝试让 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));
    }
}
4

1 回答 1

1

我不知道 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);
于 2013-11-13T14:47:55.660 回答