草庐IT

node.js - 用户套接字与服务器断开连接后如何发送消息

我正在使用node.js的net模块构建一个基于TCP的聊天服务器。我已经想出如何处理两个用户都连接到服务器的情况。但是,对于聊天应用程序,即使用户断开了互联网连接,人们仍然可以向那些断开连接的用户发送消息。我只是不知道如何实现这一目标。 最佳答案 您需要将消息保存在数据库中,以便当他们再次登录时您可以检索已发送的消息并一次发送所有消息。无法与已注销的用户通信。您只需将消息排队并在它们重新连接时传送它们。 关于node.js-用户套接字与服务器断开连接后如何发送消息,我们在StackOv

boost tcp 客户端有时无法检测到与服务器的断开连接

我正在使用boost::asio::tcp::socket连接到服务器,然后调用read_some()从Server接收二进制数据,代码如下:len=sock->read_some(boost::asio::buffer(pBuf),error);if(error==boost::asio::error::eof){break;}elseif(error){break;}但是在Server关闭socket之后,client仍然阻塞在read_some方法中,无法检测到与server的断开并得到错误信息。为什么会出现这个问题? 最佳答案

javascript - 断开连接后访问套接字对象

下面是一个简单的Node.jstcp服务器。varnet=require('net');varconn=[];varserver=net.createServer(function(client){//'connection'listenervari=conn.push(client)-1;//console.log('[conn',i,']',client.remoteAddress,':',client.remotePort);console.log('[disc]',conn[i].remoteAddress,':',conn[i].remotePort);client.on('

c - TCP 连接断开检测(如果中间链路断开)?

假设在C中实现。如果中间链路出现故障,TCP连接将通过该链路发送数据。两端的socket会不会立即无法收发数据?如果链接在5-6秒后出现,是否可以使用相同的套接字来发送和接收数据包? 最佳答案 TCP/IP协议(protocol)套件旨在处理不可靠的链接。如果连接在几秒钟后恢复,应用程序只会注意到吞吐量下降。 关于c-TCP连接断开检测(如果中间链路断开)?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

c++ - 检测连接是否已断开

我正在尝试检测连接何时断开。在这种情况下,它只会在互联网恢复时检测到连接不再事件,而不是在实际断开连接时检测到。intloop=1;longintmsConn;//Mainthreadvoidconnect(){//...while(loop){if((sizeBytes=recv(sockfd,buffer,MAX_BUFFER_SIZE-1,0))==-1){cout=10000){msConn=0;close(sockfd);}}sleep(15);}} 最佳答案 recv()返回-1出错(例如连接意外丢失),0正常断开(你忽

objective-c - IOS中的套接字断开

我需要一些IOSSocket编程方面的帮助。我已经在IOS和Java服务器之间实现了一个成功的TCP套接字连接,但是我发现套接字失败后无法重新连接它(我断开我的网络并重新连接它)。这是我用来打开流的代码:-(void)initCommunication{@try{CFStreamCreatePairWithSocketToHost(NULL,(CFStringRef)@"XXX.XXX.XXX.XXX",4454,&readStream,&writeStream);inputStream=(__bridgeNSInputStream*)readStream;outputStream=(

sockets - 硬件断开后 TCP 恢复连接

我有一个连续写入TCP套接字的程序。我想确保如果客户端和服务器之间的连接断开任何时间,都可以重新建立连接。现在,我可以断开连接,当write()函数循环时,它返回一个“连接被对等重置”错误,然后是ULLONG_MAX的值。然后,一旦我重新插入电线,write()就会不断返回“破管”错误。我试图关闭并重新打开连接,但我继续收到“连接被对等重置”错误。有谁知道我如何才能重新建立连接或在一开始就将其保持一定时间(或无限期)? 最佳答案 你不能在这里重复使用文件描述符,你必须从头开始-创建新的socket(2)并调用connect(2)在上

c - 我将如何在 linux c 编程中使用 setsockopt 和 getsockopt 与 KEEP_ALIVE 来确定断开的 tcp/ip 连接?

我将如何在linuxc编程中使用setsockopt和getsockopt来确定断开的tcp/ip连接? 最佳答案 来自TCPmanpage:TosetorgetaTCPsocketoption,callgetsockopt(2)toreadorsetsockopt(2)towritetheoptionwiththeoptionlevelargumentsettoIPPROTO_TCP.以下是相关选项:TCP_KEEPCNT(自Linux2.4起)ThemaximumnumberofkeepaliveprobesTCPshoulds

networking - 无数据时TCP断开

我查了TCP协议(protocol)的wiki,没发现长时间没有数据传输socket连接会不会超时。我的意思是..不会有物理问题,但两台计算机将有一段时间没有数据可以相互发送。怎么连接还会存在?是否会有一些低级数据传输来帮助它了解它没有损坏?谢谢!对不起,如果问题很愚蠢.. 最佳答案 没有数据通过网络发送来维持TCP连接。您可以简单地通过发送()来自任一对等方的零字节数据包来发送网络层保持事件状态,或者启用套接字选项以使操作系统定期为您发送它们。在我看来,应用层保持事件(您的应用程序协议(protocol)对其进行管理)提供比传输层

sql - 异步服务器,在等待回调时处理断开连接

我有一个关于异步服务器管理的问题。我正在使用libevent2和(为了我自己的学习经验)普通的ANSIC。我使用apache2实用程序中的ab进行压力测试。主要是-n10000和-c400。我的数据库是本地网络中debian计算机上的sqlserver。所以连接速度非常快。我还使用valgrind(--leak-check=full--show-reachable=yes)分析我的应用程序我现在有一个问题。当我对sql数据库进行同步调用时,一切正常。但是这一切都是在主线程上完成的,所以新客户端接收数据需要一些时间(同时压力正在运行)。当我对sql数据库进行异步调用时,一切正常,只要在s