ChinaUnix.net
相关文章推荐:

shutdown 和 close的区别

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/60705/showart_1074946.html

by phrack2561 - 网络技术文档中心 - 2008-07-07 13:50:08 阅读(1117) 回复(0)

相关讨论

本帖最后由 sjdy521 于 2014-08-27 17:54 编辑 [code]use Socket; socketpair(my $master_fd,my $worker_fd,AF_UNIX,SOCK_STREAM,0) or die $!; if(fork ==0){#worker sleep 1; shutdown $worker_fd,2; } else{#master while(<$master_fd>){ print; [/code][code]use Socket; socketpair(my $master_fd,my $worker_fd,AF_UNIX,SOCK_STREAM,0) or die $!; if(fork ==0){#worker sleep 1; close ...

by sjdy521 - Perl - 2014-09-01 12:09:34 阅读(1758) 回复(2)

本帖最后由 seufy88 于 2014-04-01 21:01 编辑 这两个的区别在网上都有好多文章. 只是我还是有不明点.所以想请教一下大家. 这里不考虑多进程共享socket id这种情况. 单纯的讨论. close (socket id): 马上发送FIN信号,所有的未完成发送或者接受的数据都将被丢失 close成功后,对这个socket id进行read/write都将失败. 但是从TCP层面将,close只是能控制本方发送FIN到对方,并不能控制对方何时发送FIN过来. 请问在这种情况下,如果...

by seufy88 - Linux环境编程 - 2014-04-21 12:05:18 阅读(5783) 回复(33)

我在SCO UNIX下写了一个TCP/IP服务程序,客户端是delphi写的,服务端发送数据报后关闭socket(shutdown(handle,5);close(handle);) 客户端接收不到数据,但是在发送完数据后使用sleep(50);然后再关闭socket 就可以收到,请高手解决帮帮了,谢谢 (服务端使用阻塞方式,客户端使用非阻塞方式)

by 大马虎 - C/C++ - 2013-12-24 22:25:24 阅读(9201) 回复(9)

socket编程中,shutdown(sockfd,2)close(fd)有区别吗? 我感觉没区别.

by wlia - C/C++ - 2009-08-11 17:55:02 阅读(2283) 回复(2)

网络编程套接字关闭时的函数,很类似但是也有很大的区别 close 使套接字的访问计数减1,如果为0的话就关闭此套接字(发送fin) shutdown 始终都会发送fin,而且可以实现半关闭,在某些应用上获得更好的效率 另外,为什么select时套接字要设置成非阻塞的。 读情况:缓冲区有数据,但是使用的是read_n,大于缓冲区里面的数据,如果是阻塞的就。。。 写情况:缓冲区有空闲,但是要写的数据大于空闲区,如果是阻塞的就。。。 本...

by HJLin - Linux文档专区 - 2008-04-15 09:37:42 阅读(683) 回复(0)

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)

Linux Socket编程中的shutdownclose 1,只要TCP栈的读缓冲里还有未读取(read)数据,则调用close时会直接向对端发送RST。 2,shutdown与socket描述符没有关系,即使调用shutdown(fd, SHUT_RDWR)也不会关闭fd,最终还需close(fd)。 3,可以认为shutdown(fd, SHUT_RD)是空操作,因为shutdown后还可以继续从该socket读取数据,这点也许还需要进一步证实。 4,在已发送FIN包后write该socket描述符会引发EPIPE/SIGPIPE。 5,当有多个...

by marvinlee - Linux文档专区 - 2009-08-30 03:20:55 阅读(987) 回复(0)

我查了很多关于socket的closeshutdown的材料,觉得还是晕晕的,请帮忙理解一下。 ===== 引用1: close()shutdown()——结束数据传输   当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:close(sockfd);   你也可以调用shutdown()函数来关闭该socket。该函数允许你只停止在某个方向上的数据传输,而一个方向上的数据传输继续进行。如你可以关闭某socket的写操作而...

by wkathy - 程序开发 - 2006-06-04 18:12:26 阅读(5656) 回复(9)

我查了很多关于socket的closeshutdown的材料,觉得还是晕晕的,请帮忙理解一下。 ===== 引用1: close()shutdown()——结束数据传输   当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:close(sockfd);   你也可以调用shutdown()函数来关闭该socket。该函数允许你只停止在某个方向上的数据传输,而一个方向上的数据传输继续进行。如你可以关闭某socket的写操作而...

by wkathy - Linux环境编程 - 2006-06-04 18:12:26 阅读(11764) 回复(9)

连接是tcp的 程序跑的时候server端在服务结束后,在子线程里面调用shutdown(connfd, SHUT_RDWR)关闭accept产生的socket。 但是最终发现这些socket没有被释放,导致fd溢出。 我改用close关闭socket後,socket就被释放了。 我看了看shutdownclose的描述,了解到shutdown会直接激发关闭序列 如果说client端对关闭序列无响应的话,那么close後为啥socket被释放了呢? 查看过shutdown的返回值,没有错误 由于看不到client的程序代码...

by kuaizaifeng - C/C++ - 2009-05-06 23:28:31 阅读(24513) 回复(26)