C 关闭套接字的读取端,同时保持发送端活动
我有一台接收和发送数据的服务器 当我关闭服务器时,我希望突然停止接收数据,但希望保持发送活动,以便发送缓冲区中的数据 setsockopt和任何其他选项期间是否有任何参数需要设置,因为关闭套接字将同时关闭发送和接收C 关闭套接字的读取端,同时保持发送端活动,c,sockets,tcp,C,Sockets,Tcp,我有一台接收和发送数据的服务器 当我关闭服务器时,我希望突然停止接收数据,但希望保持发送活动,以便发送缓冲区中的数据 setsockopt和任何其他选项期间是否有任何参数需要设置,因为关闭套接字将同时关闭发送和接收 谢谢,您可以使用shutdown()功能来执行此操作。从手动2关闭: 概要 #include <sys/socket.h> int shutdown(int s, int how); #包括 int关闭(int s,int how); 描述 shutdown()
谢谢,您可以使用
shutdown()
功能来执行此操作。从手动2关闭
:
概要
#include <sys/socket.h>
int shutdown(int s, int how);
#包括
int关闭(int s,int how);
描述
shutdown()调用会导致服务器上的全部或部分全双工连接
与要关闭的s关联的套接字。如果是如何关闭的,进一步
接收将被禁止。如果如何关闭\u WR,则需要进一步发送
不允许。如果如何关闭RDWR,将显示进一步的发送和接收-
允许
您可以在套接字功能中使用shutdown()来实现这一点
'希望保持发送处于活动状态,以便
缓冲区中的数据已发送。“
数据在什么缓冲区?您的输出流或写入器?把它关上。它将被发送
如果您指的是套接字发送缓冲区,那么就更不用担心了
shutdown()解决方案在另一端(发送端)具有依赖于平台的效果。在某些平台(Windows)上,发件人将获得“连接重置”。在其他平台(Linux)上,发送方将填充接收方的接收缓冲区和他自己的发送缓冲区,并最终暂停。在其他平台(BSD)上,发送方将永远愉快地编写,这可能是最好的实现,但它会浪费带宽