今天复盘了下昨天写的代码,还是发现了一些问题:
- 用数组和指针来实现字符串
char *str = "12345";
这种写法可能会抛出警告但不会报错,因为实际上等号两边变量不一样:
等号两边的变量类型不一样,那么编译器会 implicit conversion 来使得变量可以被赋值。
避免警告应该改写为
const char *str = "12345"; char *str = (char *)12345";
- 结构体指针和结构体
就是注意"." 和“->”的用法
另外sizeof(结构体指针) = 8(64位)
- backlog
- accept函数(待完善)
int fd= ( int sockfd, struct sockaddr * addr,socklen_t * addrlen);
以我的代码为例的话,sockfd是服务器的fd(listen_fd),addr是指向客户端(温度传感器)的地址(client_addr),它需要强制类型转化
client_fd = accept(listen_fd,(struct sockaddr*)&client_addr,&client_addr_len)
如果不带addrlen会报错bad address,因此需要提前定义一个socklen_t 型变量
socklen_t client_addr_len;
并且返回一个int 类型的 fd,后面就通过这个fd进行read write相关操作
标签:socklen,addr,char,client,fd,日常,str,复盘 From: https://www.cnblogs.com/genm/p/16819032.html