当前位置: 首页 > news >正文

架构师面试(二十九):TCP Socket 编程

问题

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

在基于 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

相关文章:

  • MapStruct复制失败,属性为null,与lombok有关系
  • 【Flink运行时架构】重要概念
  • linux多线(进)程编程——(1)前置知识
  • HTML5/JS/Vue与Java后端技术类比(AI创作)
  • SpringBoot对接火山引擎大模型api实现图片识别与分析
  • 深入理解Liunx文件系统与日志分析
  • 尚硅谷2019版Java网络编程笔记
  • HBase客户端metacache缓存过期报错
  • Mybatis 中 mappers标签 package的使用
  • 一种基于学习的多尺度方法及其在非弹性碰撞问题中的应用·
  • 【Linux】VLAN配置命令
  • 【数据结构_6上篇】有关链表的oj题
  • 【含文档+PPT+源码】蛋糕商城预定App的设计与实现
  • HTML5新特性
  • 在springboot项目中调用第三方天气api服务
  • js中 剩余运算符(Rest Operator )(...)和展开运算符(Spread Operator)(...)的区别及用法
  • 基于open3d的一些常见点云操作
  • 【数据结构_4】顺序表
  • Adobe After Effects的插件--------Optical Flares之面板属性
  • KWDB创作者计划—KWDB场景创新:多模态数据融合与边缘智能的产业实践
  • “五一”假期首日国铁郑州局迎大客流,预计发送旅客逾95万人次
  • 山西太原一处居民小区发生爆炸,现场产生大量浓烟
  • 百年传承,再启新程,参天中国迎来2.0时代
  • 2025年“投资新余•上海行”钢铁产业“双招双引”推介会成功举行
  • 违规行为屡禁不止、责任边界模糊不清,法治日报:洞穴探险,谁为安全事故买单?
  • 上海科创的三种品格