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