socket关闭有2个close,shutdown 他们之间的区别: close-----关闭本进程的socket id,但链接还是开着的,用这个socket id的其它进程还能用这个链接,能读或写这个socket id shutdown--则破坏了socket 链接,读的时候可能侦探到EOF结束符,写的时候可能会收到一个SIGPIPE信号,这个信号可能直到socket buffer被填充了才收到,shutdown还有一个关闭方式的参数,0 不能再读,1不能再写,2 读写都不能, 本文来自ChinaUnix博客,如果查看原文请...
by ovipgdft - 网络技术文档中心 - 2006-10-12 14:00:49 阅读(1234) 回复(0)
我在SCO UNIX下写了一个TCP/IP服务程序,客户端是delphi写的,服务端发送数据报后关闭socket(shutdown(handle,5);close(handle);) 客户端接收不到数据,但是在发送完数据后使用sleep(50);然后再关闭socket 就可以收到,请高手解决帮帮了,谢谢 (服务端使用阻塞方式,客户端使用非阻塞方式)
在MSDN中对shutdown函数中的Remarks部分有下面一段话,指出了如何进行一次优雅的slcket关闭: To assure that all data is sent and received on a connected socket before it is closed, an application should use shutdown to close connection before calling closesocket. For example, to initiate a graceful disconnect: Call WSAAsyncSelect to register for FD_CLOSE notification. Call shutdown with how=SD_SEND....
fd_accept 是已经连接socket 我使用 read(fd_accept, buffer,1-111); 然后close(fd_accept) ;//这里会发送一个RST分解而不是FIN 为什么呢?我期望是FIN 是不是对有错误的socket close也导致RST?
假设有这么两个进程,一个服务端进程,一个客户端进程. 我的客户端进程向服务端进程发送数据,但服务端进程不接收缓冲区里的数据. 当服务端进程的接收缓冲区里有了一堆数据的时候,我的客户端进程执行了close, 这个时候我的服务端进程怎么才能获取客户端的关闭信号?
我的机器做为服务端,接收外部的连接, 我起LISTEN后,监听888端口,过一段时间后用 netstat -a 发现该端口有很多连接都是 CLOSE_WAIT的,为什么 如何把这些close_wait的连接去掉
shutdown -h now
/usr/sbin/shutdown: illegal option -- h
Usage: /usr/sbin/shutdown [ -y ] [ -g