您的位置:首页 > 游戏 > 手游 > 企业网站seo关键词优化排名思路_装修设计网站哪个好用_河南企业站seo_北京seo网站优化培训

企业网站seo关键词优化排名思路_装修设计网站哪个好用_河南企业站seo_北京seo网站优化培训

2025/7/26 20:26:01 来源:https://blog.csdn.net/wang_zong_sheng/article/details/147190761  浏览:    关键词:企业网站seo关键词优化排名思路_装修设计网站哪个好用_河南企业站seo_北京seo网站优化培训
企业网站seo关键词优化排名思路_装修设计网站哪个好用_河南企业站seo_北京seo网站优化培训

问题

今天考察网络编程的基础知识。

在基于 TCP  协议的网络 【socket 编程】中可能会遇到很多异常,在下面的相关描述中说法正确的有哪几项呢?

A. 在建立连接被拒绝时,有可能是因为网络不通或地址错误或 server 端对应端口未被监听;

B. 在对 socket 连接执行读写操作时,如果一个数据包没有被完整读出或完整写入,继续进行读写操作即可,除非连接已经断开;

C. 如果对方关闭了 socket 连接,我们是可以继续对 socket 进行读操作的,直至读完最后一个字节,也可以继续对 socket 进行写操作,直至碰到错误异常;

D. 当自己关闭了 socket 连接,如果继续读或写时,会发生 “use of closed network connection” 错误。

解析

对 TCP Socket 编程过程中遇到的五大类问题总结如下:

一、建立连接问题

   (1)连接拒绝: 网络 ping 不通;ip 或 port 指定错误;server 未启动; 

   (2)listen backlog 满:增大 server 端 listen backlog 队列;耐心等server端接收;

   (3)网络延迟较大:client 端超时处理;重连。

二、从连接中读数据问题

   (1)无数据可读:继续阻塞 read 即可,直到有数据可读或 socket 连接断开时发生读错误;

   (2)数据不足(没有读取到完整的数据包):TCP 是流式数据传输协议,继续读即可; 

   (3)读超时:会有这种情况吗?(除非上层业务添加超时参数)

三、向连接写数据问题

   (1)写阻塞:本地缓冲区或对方缓冲区已满,继续阻塞写即可;

   (2)只写入部分数据:TCP 是流式数据传输协议,继续写即可 。  

四、线程安全问题

   (1)多线程读一个 socket:有序下车,不能乱(lock),每个线程读完一个完整的数据包后再走; 

   (2)多线程写一个 socket:有序上车,不要乱(lock),每个线程写完一个完整的数据包后再走。

五、关闭连接问题

   (1)自己关闭 socket 后自己继续写数据  :use of closed network connection;

   (2)自己关闭 socket 后自己继续读数据:use of closed network connection;

   (3)对方关闭 socket 后自己继续写数据:可能写一部分,然后:An existing connection was forcibly closed by the remote host;

   (4)对方关闭 socket 后自己继续读数据:缓冲区的数据先全部读出来,然后:EOF。

这五大类问题,笔者都曾通过Go语言 一 一 验证过;深入理解常见的TCP Socket 编程问题,可以大大夯实我们的网络编程能力,能为我们后续学习分布式奠定基础!

参考答案

ABCD

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com