Linux应用开发
Linux平台c语言应用开发
1. socket 网络编程与TCP
- 主机字节序列和网络字节序列
- 大端:高字节在低位,低字节在高位
- 小端:高字节在高位,低字节在地位(x86架构多采用小端)
- 网络规定使用大端字节序,所以也把大端字节序成为网络字节序列
1 | uint32_t htonl(uint32_t hostlong); // 长整型的主机字节序转网络字节序 |
- 类似于与print,在tcp传输中同样存在数据缓冲区,在应用层只有一次接收,多次发送,但在传输层,发送端会在接收多次数据后通过数据缓冲区一次发送,而在接收端,在接收多次数据后全部放在tcp数据缓冲区
- 由于数据缓冲区的存在,会产生粘包现象
- netstat -natp 查看数据缓冲区
- n 使用ip地址表示主机
- a 显示结构包括监听socket
- t 仅显示tcp连接
- r 显示路由信息
- i 显示网卡接口数据流量
2. strlen和sizeof
strlen 测量的是字符的实际长度,以’\0’ 结束(不包含’\0’ )。而sizeof 测量的是字符的分配大小,如果未分配大小,则遇到’\0’ 结束(包含’\0’ ,也就是strlen测量的长度加1),如果已经分配内存大小,返回的就是分配的内存大小。
3. UDP
- tcp:面向连接、可靠的、流式服务
- udp:无连接、不可靠、数据报