socket连接会自动关闭吗? 服务器和客户端数据传输完毕后,双方都不关闭连接。这种情况下套接字会自动关闭吗?是不是系统执行一些操作呢???? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:close(sockfd);你也可以调用shutdown()函数来关闭该socket。该函数允许你只停止在某个方向上的数据传输,而一个方向上的数据传输继续进行。如你可以关闭某socket的写操作而允许继续在该socket上接受数据,直至读入所有数据。int shutdown(int sockfd,int how);Sockfd是需要关闭的socket的描述符。参数 how允许为shutdown操作选择以下几种方式: SHUT_RD:关闭连接的读端。也就是该套接字不再接受数据,任何当前在套接字接受缓冲区的数据将被丢弃。进程将不能对该套接字发出任何读操作。对TCP套接字该调用之后接受到的任何数据将被确认然后无声的丢弃掉。 SHUT_WR:关闭连接的写端,进程不能在对此套接字发出写操作 SHUT_RDWR:相当于调用shutdown两次:首先是以SHUT_RD,然后以SHUT_WR使用close中止一个连接,但它只是减少描述符的参考数,并不直接关闭连接,只有当描述符的参考数为0时才关闭连接。shutdown可直接关闭描述符,不考虑描述符的参考数,可选择中止一个方向的连接。注意: 1>. 如果有多个进程共享一个套接字,close每被调用一次,计数减1,直到计数为0时,也就是所用进程都调用了close,套接字将被释放。 2>. 在多进程中如果一个进程中shutdown(sfd, SHUT_RDWR)后其它的进程将无法进行通信. 如果一个进程close(sfd)将不会影响到其它进程. 得自己理解引用计数的用法了. 有Kernel编程知识的更好理解了. http://hi.baidu.com/icicly/blog/item/affad881125a15dfbc3e1ef9.html这个介绍的更详细。一句话该关闭的就关闭,按照你的题意,它是不会自己关闭的。 我觉得不会以前做过一个实验,打开后不作任何操作,经过一个通宵之后,第二天早上连接还能用。不过是数据库连接,不是Socket连接。楼主可以自己写段程序试验一下。 我需要一个音量控制的控件,也就是trackBar的美化版,有的请帮忙~~ 请大家给个做论坛的思路 怎么引用mshtml? 高分求教c#中为什么打印预览和实际打印效果有差别 重载自增操作符 没有女孩的日子(程序员的苦与泪)散分 Attribute控制附加的方法返回值 Chart大小的控制 为什么C#的winform设计器要求Form是每个文件的第一个类? 用c#可以方便的开发出传统的C/S结构的程序吗? 多线程下载 如何判断一个url是目录还是文件? 急
Sockfd是需要关闭的socket的描述符。参数 how允许为shutdown操作选择以下几种方式:
SHUT_RD:关闭连接的读端。也就是该套接字不再接受数据,任何当前在套接字接受缓冲区的数据将被丢弃。进程将不能对该套接字发出任何读操作。对TCP套接字该调用之后接受到的任何数据将被确认然后无声的丢弃掉。
SHUT_WR:关闭连接的写端,进程不能在对此套接字发出写操作
SHUT_RDWR:相当于调用shutdown两次:首先是以SHUT_RD,然后以SHUT_WR
使用close中止一个连接,但它只是减少描述符的参考数,并不直接关闭连接,只有当描述符的参考数为0时才关闭连接。
shutdown可直接关闭描述符,不考虑描述符的参考数,可选择中止一个方向的连接。注意:
1>. 如果有多个进程共享一个套接字,close每被调用一次,计数减1,直到计数为0时,也就是所用进程都调用了close,套接字将被释放。
2>. 在多进程中如果一个进程中shutdown(sfd, SHUT_RDWR)后其它的进程将无法进行通信. 如果一个进程close(sfd)将不会影响到其它进程. 得自己理解引用计数的用法了. 有Kernel编程知识的更好理解了.
http://hi.baidu.com/icicly/blog/item/affad881125a15dfbc3e1ef9.html这个介绍的更详细。一句话该关闭的就关闭,按照你的题意,它是不会自己关闭的。
楼主可以自己写段程序试验一下。