Linux C TCP服务器收不到报文
来源:互联网 发布:屏风专卖店淘宝网 编辑:程序博客网 时间:2024/05/19 00:40
TCP服务器收不到报文
本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:
问题描述
最近写了一个tcp服务器,测试发现始终收不到服务器报文。
问题原因
进一步调试发现了问题所在,accept函数如下:
//if ((client_sock = accept(server_sock, (struct sockaddr *)&addr, &len)) < 0)if ((client_sock = accept(server_sock, (struct sockaddr *)&addr, &len) < 0)) { ERROR("accept() failed,ret:%d err: %d,[%s].",client_sock, errno, strerror(errno)); return -1;}DEBUG("Accpet client sock %d\n");
注释掉的accept判断方法即为BUG原因,由于=运算符优先级低于<运算符的优先级,导致client_sock的值最后只有0和1,因此才无法正常收到报文。
解决方法
//写法一if ((client_sock = accept(server_sock, (struct sockaddr *)&addr, &len) < 0)){...}//写法二client_sock = accept(server_sock, (struct sockaddr *)&addr, &len);if (client_sock < 0) {...}
规避方法
养成写法二的编码格式习惯,提高容错率
阅读全文
0 0
- Linux C TCP服务器收不到报文
- Linux c获取IP报文
- TCP报文
- TCP 报文
- TCP报文
- TCP报文
- Linux C——TCP客户端服务器通信
- Linux C TCP Socket实现客户与服务器简单通信
- Linux C TCP Socket实现客户与服务器简单通信
- linux多线程+TCP服务器
- Linux TCP服务器
- Linux设置TCP发送报文的大小(SEGMENT)
- C#TCP服务器简单程序
- c#tcp服务器代码实例
- TCP报文格式
- tcp报文头
- TCP 的RST 报文
- TCP/IP报文格式
- 区块链是什么
- redis 检查key expire事件
- 利用栈数据结构彻底搞定走迷宫案例解析(并非最短路径)
- 从git上拉取代码后使用 project clean命令也build不通过
- Ros 消息结构1
- Linux C TCP服务器收不到报文
- spring boot获取属性文件内容
- js 作用域、闭包
- JAVA多线程实现的三种方式
- osgEarth矢量瓦片tfs生成建筑案例 4. boston_tfs.earth
- 【JavaEE学习笔记】文件上传与下载、监听器、过滤器
- java面试题
- SAPUI5教程——最全中文学习指南(必看)
- Qt之进程间通信(Windows消息)