TCP套接字发送/接收始终等待

帕累多利亚

TCP在服务器和客户端之间建立连接。服务器发送数据,客户端接收数据,客户端反馈服务器。但是,如果客户端关闭套接字并再次创建,则服务器永远不会接受它,因为它正在等待客户端的反馈。那么我该如何解决呢?

服务器

byte[] buffer = new byte[1000];
string ip = "192.168.1.17";
int port = 15500;

IPAddress ipAddress = IPAddress.Parse(ip);
IPEndPoint localEndpoint = new IPEndPoint(ipAddress, port);

Socket sock = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

Console.WriteLine("Waiting client...");
sock.Bind(localEndpoint);
sock.Listen(5);

Socket confd = sock.Accept();

Console.WriteLine("Connected with {0} at port {1}", ip, port);
Sender sender = new Sender();
Receiver receiver = new Receiver();

while (true) {
    if (confd.Connected) {
        sender.SendData(confd);
        receiver.ReceiveData(confd); //Waiting here
    } 
    else {
        confd.Close();
        Console.WriteLine("Waiting client...");
        confd = sock.Accept();
    }
}
马克·格雷维尔(Marc Gravell)

每个套接字都有一个线程通常是一个坏主意。具有处理套接字IO并接受连接单个线程通常是一个糟糕的主意。导致套接字断开连接被忽略的原因有很多种-有一段时间,或者在某些情况下:无限期。避免此问题的方法通常是使一个线程(或这些天:async循环)专用于接受连接和初始化连接,然后而不是为每个套接字创建线程,而是使用异步IO来读取/写入而不需要线程。尽管如果插槽数量很少,您可能会能够摆脱“每插槽线程数”的困扰。最后,要么使用读/写超时,要么定期进行“我最近看过这个套接字了吗?” 检查(通过所有套接字),以帮助关闭静默失败的套接字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TCP:套接字发送/接收顺序

来自分类Dev

Android通过套接字发送图像,但始终在服务器端接收到空图像

来自分类Dev

PHP反复从TCP套接字接收数据

来自分类Dev

使用从TCP套接字[python]接收的数据

来自分类Dev

设置套接字接收TCP超时

来自分类Dev

C ++,TCP套接字无法接收数据

来自分类Dev

Java TCP套接字未正确接收

来自分类Dev

Android TCP 套接字不接收数据

来自分类Dev

TCP套接字是否以发送数据的相同方式接收数据?

来自分类Dev

我的TCP套接字服务器未发送和接收

来自分类Dev

使用(boost asio)TCP套接字:不同的发送速率与接收速率

来自分类Dev

如何使用C#套接字TCP连接调度发送/接收数据

来自分类Dev

TCP套接字是否以发送数据的相同方式接收数据?

来自分类Dev

如何在套接字上编写简单的TCP发送器/接收器

来自分类Dev

套接字发送/接收的单独线程?

来自分类Dev

通过套接字发送和接收图像

来自分类Dev

UDP发送和接收套接字行为

来自分类Dev

Python套接字-同时发送/接收消息

来自分类Dev

使用套接字发送和接收

来自分类Dev

Java套接字不发送/接收消息

来自分类Dev

Java Tcp套接字发送额外的数据?

来自分类Dev

通过TCP套接字发送多个文件

来自分类Dev

TCP套接字复用发送大数据

来自分类Dev

套接字接收-等待时间有限

来自分类Dev

C ++ IP服务器套接字始终从PHP套接字客户端接收“ 0100000001000000”

来自分类Dev

接收来自TCP套接字的确认

来自分类Dev

如何在套接字连接中接收 tcp 标志

来自分类Dev

TCP客户端套接字。连接并等待输入流

来自分类Dev

如何在Python套接字中进行发送和接收?

Related 相关文章

热门标签

归档