(二)关于套接字的断开操作--半关闭
来源:互联网 发布:创意美工作品图片大全 编辑:程序博客网 时间:2024/05/22 17:14
在我们断开套接字的时候,应该尽量保证一个通信流程的完整,例如服务器或者客户端要关闭套接字,应该跟对方说:我要断开了,对方收到断开请求,有的时候要做响应的处理,比如保存当前状态,或者发送最后一帧数据报告断开前的状态,直接调用close()不是不是最好的方法
半关闭
服务器端,一般服务器主动断开连接的时候,才会用到半关闭,
半关闭的意思是,服务器关闭写通道,此时会给客户端发送一个EOF信息,客户端收到之后,知道服务器要关闭连接,此时客户端还可以向服务器发送最后一次信息,做最后的数据处理,服务器收到之后会完全关闭套接字
//int shutdown(int sock,int howto)//sock 套接字//howto 断开方式 SHUT_RX 断开输入流 SHUT_WR 断开输出流 SHUT_RDWR 同时断开int main(int argc, char const *argv[]){ int serv_sock,clnt_sock; int clnt_addr_size; char readbuf[READ_SIZE]={0}; struct sockaddr_in serv_addr,clnt_addr; serv_sock=socket(PF_INET,SOCK_STREAM,0); if(serv_sock==-1) error_handling("creat socket error!"); memset(&serv_addr,0,sizeof(serv_addr)); serv_addr.sin_family=AF_INET; serv_addr.sin_addr=htonl(INADDR_ANY); serv_addr.sin_port=htons(SERV_PORT); if(bind(serv_sock,(struct socaddr *)&serv_addr,sizeof(serv_addr))==-1) { error_handling("bind error"); } if(listen(serv_sock,5)==-1) { error_handling("listen error"); } clnt_addr_size=sizeof(clnt_addr); while(1){ clnt_sock=accept(serv_sock,(struct socaddr *)&clnt_addr,clnt_addr_size);//这里会阻塞,等待客户端连接 read(clnt_sock,readbuf,READ_SIZE-1);//读取客户端发送来的数据 write(clnt_sock,readbuf,sizeof(readbuf)); } shutdown(serv_sock,SHUT_WR);//关闭输输出通道,客户端会收到EOF,就知道服务端要关闭了,向服务端发送最后一帧数据 read(clnt_sock,readbuf,READ_SIZE);//此时输入通道还未关闭,所以能读取客户端的数据 close(clnt_sock);//完全关闭 close(serv_sock);//完全关闭 return 0;}void error_handling(char * message){ printf("%s\n",message);}
阅读全文
0 0
- (二)关于套接字的断开操作--半关闭
- 关于TCP套接字编程中的send()引起的断开的通道
- 套接字的关闭过程
- 关闭套接字closesocket()
- 7.1 优雅断开套接字
- kernel中套接字的绑定、监听、连接和断开
- 断开套接字连接-----网络编程(Linux----C)
- Java网络编程 --– 套接字的半关闭
- UDP套接字的数据传输.套接字的关闭
- 关闭套接字的安全处理
- 关闭套接字
- c#判断套接字链接断开
- 套接字编程(二)
- (二十一)套接字
- 关于套接字(socket)
- linux套接字编程笔记(二)--简单的TCP套接字应用程序
- Linux内核--网络协议栈深入分析(五)--套接字的绑定、监听、连接和断开
- Linux内核--网络协议栈深入分析(五)--套接字的绑定、监听、连接和断开
- 机房收费系统—前期配置
- Postgres设置pg_log日志记录内容
- java(十四):transient与序列化
- Linux应用编程基础--(8)线程间的同步和互斥
- 极客公园邀你一起探寻技术X资本的下一个引爆点
- (二)关于套接字的断开操作--半关闭
- 你一定没想过,直播能否激发人性中的善
- 记录一下MD5和RSA的加密程序
- TechCrunch 国际创新峰会<上海站>邀你一起 See the Future
- FCC算法:一、Reverse a String--翻转字符串
- 易车CEO李斌演讲:人们需要买一辆智能汽车
- 亚伦·艾辛格:这个给波士顿动力补刀的男人,竟然是谷歌第一文艺青年!
- “钢铁侠”收购了表弟的公司,SolarCity背后的故事
- DrawerLayout NavigationView 实现侧滑(android MD 一)