导航:首页 > 操作系统 > closesocketlinux

closesocketlinux

发布时间:2022-09-08 09:46:57

1. linux python socket怎么去除

原因是server端关掉了tcp连接,给client发送FIN信号,client的tcp层回了ACK,然后它的socket状态就处于close_wait状态。

实验:

Python中,socket在send之前处于close_wait状态,那么该send不会报错,并且执行完之后socket就closed了。再继续调用send就会报错。


推理:

说明python的socket.send在发送数据之前会检查socket的状态,如果处于close_wait,就执行close(socket)(应用层感觉不到哦),然后正常退出。所以再次send时,会抛出异常。


为什么会一直处close_wait状态?

当socket处于close_wait时,必须由应用层调用close(socket),发送FIN给server端才能变为LAST_ACK,接收到server端回应的ACK后,才变为CLOSED。如果应用层不调用close(),那么socket会一直处于close_wait。[1]


如果我在python中不断循环去调用socket.sendall(),那么在socket变为close_wait后,通过socket.sendall()也会关闭socket,为什么它还是一直处在close_wait状态呢?

原因在于当sendall(data)的data比较大,在data被发送一半时,连接被server端断掉了。那么sendall(data)会一直卡在那,也就不会执行到sendall的开始处,去判断socket状态,确定是否关闭socket了。

简单而言,就是socket在变为close_wait之后,根本没有调用sendall()去关闭socket。


2. Linux下socket创建后,进程退出是否需要主动调用close关闭

进程退出 必须要父进程进行回收 要不然会产生孤儿进程造成资源浪费。也会对系统产生影响。推荐ibm出的unix环境高级编程 或者鸟哥的linux私房菜。linux跟unix差不多。希望能帮到你

3. socket在windows下和linux下的区别

下面大概分几个方面进行罗列: Linux要包含 [cpp] #include #include #include #include 等头文件,而windows下则是包含 [cpp] #include 。 Linux中socket为整形,Windows中为一个SOCKET。 Linux中关闭socket为close,Windows中为closesocket。 ...

阅读全文

与closesocketlinux相关的资料

热点内容
求索记录频道哪个app可以看 浏览:726
金梅瓶pdf下载 浏览:969
机器软件用什么编程 浏览:843
java虚拟机指令 浏览:657
shell编程入门书籍 浏览:943
大连桶装水溯源码售价 浏览:302
php怎么跳转到电脑 浏览:414
如何在电脑上创建新网络连接服务器 浏览:61
c语言编译之后如何运行 浏览:569
mfc多线程编程视频 浏览:411
c编译的中文怎么写 浏览:91
单片机连接蜂鸣器电路 浏览:845
程序员买房前后对比照 浏览:992
cmdjava中文乱码 浏览:948
窗口app哪个好 浏览:732
xzforandroid 浏览:580
程序员那么可爱歌曲完整版 浏览:911
为什么购买pdf 浏览:50
操作系统代码编译 浏览:483
程序员东北大学 浏览:432