基于select的客户端服务端一对一通信的socket学习反思

本文探讨了C/C++编程中的一些常见问题,包括加减运算与移位操作的优先级,未初始化数组可能导致的神秘字符,select函数调用前设置时间的重要性,send和recv函数的使用注意事项,int与char类型转换的正确方式,以及移位操作的逻辑与算术区别。此外,还提到了大小端问题对数据存储的影响,以及强制类型转换可能导致的通信问题。
摘要由CSDN通过智能技术生成

1.加减号的优先级比移位高
2.出现烫烫烫的原因可能是因为数组没有初始化,未用到的空间转义为烫烫烫
3.select每次调用前一定要设置好时间,时间参数为秒和微秒
4.send()和rec()函数中发送或接收的字节数要看清楚
5.int是4字节32位,char是1字节8位,不能直接强制转换,要么调库解决,要么移位解决
4.7号 注:可以!!!!
send不关心传的数据类型,只关心起始位置——指针,和多少——len
6.

char buf[BUF_SIZE];
int accb;
accb = (buf[0] << 8) + buf[1]; //错误!!此时buf为char不能相加,需要先转换!!!

7.c/c++中的移位操作符,在左移时执行的是逻辑移位,在右移时执行的是算术移位。

逻辑移位

逻辑移位是指逻辑左移和逻辑右移,移出的空位都用0来补。

算术移位

算术移位 就需要分有符号型值和无符号型值
对于无符号型值,算术移位等同于逻辑移位。
而对于有符号型值 ,算术左移等同于逻辑左移,算术右移补的是符号位,正数补0,负数补1。

buf[1] = 0x8c
accb2 = buf[1]后accb2变成了0x0000008c //疑惑?
  1. 改了很多天的才发现的错误 client的send和recive函数误用成一个数组

  2. 只要轮子就不要去造汽车!

什么是大端,什么是小端:
实际上还是看数据的低位在内存地址的哪里,数据低位在内存高位就是大端,在内存低位就是小端。

11.使用(char *)强制转换然后server端select收不到了???

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值