c# socket编程.允许两个应用程序使用相同的套接字/TCP连接



我正在创建c#套接字应用程序和服务器端。我需要创建一个c# windows服务,它应该创建一个TCP连接,并在特定的地址/端口上监听/建立与客户端的连接. 例如:172.00.000.0/1000我已经使用TCPListener完成了

另一个c# windows服务将使用相同的socket/TCP连接与客户端传输消息。

这个设计是为了确保,第一个windows服务将保持套接字/TCP连接所有的时间和第二个windows服务可以停止/暂停,当有部署,一旦应用程序启动,套接字连接开始传输消息,因为,连接是由于第一个windows服务。

你可以尝试使用这个TcpTransferLib:https://www.nuget.org/packages/TcpTransferLib/2.0.0.6

没有文档说明,但是使用这个库创建服务器和客户端很简单。好处是,这个库关心块,所以你可以只发送"消息"到服务器或返回到客户端。我在一些项目中使用它,它工作稳定。

服务器代码:

TcpTransfer tcpServer = null;
tcpServer = new TcpTransfer();
tcpServer.bufferChunk = 4096;
tcpServer.connectionTimeout = 15000;
tcpServer.receiveTimeout = 15000;
tcpServer.sendTimeout = 15000;
tcpServer.pingOnReceiveTimeout = true;
tcpServer.OnReceive += TcpServer_OnReceive;
tcpServer.StartServer(5557);
private void TcpServer_OnReceive(object sender, PacketReceiveEventArgs e)
{
string data = Encoding.UTF8.GetString(e.data, 0, e.data.Length);
}
客户端代码:
TcpTransfer tcpClient = null;
tcpClient = new TcpTransfer();
tcpClient.bufferChunk = 4096;
tcpClient.connectionTimeout = 15000;
tcpClient.receiveTimeout = 15000;
tcpClient.sendTimeout = 15000;
tcpClient.pingOnReceiveTimeout = true;
bool connected = tcpClient.Connect(ip, port);
if(connected)
tcpClient.Send("hello", tcpClient.masterClient);

这很容易,但没有太多的选择:-)…

最新更新