文章目录
 
 
 
Linux网络编程之UDP
1、端口号
2、端口号和进程ID的区别
3、重新认识网络通讯过程
4、UDP协议的简单认识
5、网络字节序
为使网络程序具有可移植性,使同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换:
#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
助记:h表示host,n表示network,l表示32位长整数,s表示16位短整数。
6、socket编程接口
6.1、socket常见接口
6.2、sockaddr通用地址结构
sockaddr通用地址结构:
/* Structure describing a generic socket address.  */
struct sockaddr
 {
   __SOCKADDR_COMMON (sa_);	/* Common data: address family and length.  */
   char sa_data[14];		/* Address data.  */
 };
sockaddr_in结构:
/* Structure describing an Internet socket address.  */
struct sockaddr_in
 {
   __SOCKADDR_COMMON (sin_); // 地址类型
   in_port_t sin_port;			/* Port number.  */
   struct in_addr sin_addr;		/* Internet address.  */
   /* Pad to size of `struct sockaddr'.  */
   unsigned char sin_zero[sizeof (struct sockaddr) // 8字节填充
			   - __SOCKADDR_COMMON_SIZE
			   - sizeof (in_port_t)
			   - sizeof (struct in_addr)];
 };
in_addr结构:
/* Internet address.  */
typedef uint32_t in_addr_t;
struct in_addr
 {
   in_addr_t s_addr;
 };
7、简单的UDP网络程序
7.1、服务器响应程序
7.2、服务器执行命令行
7.3、服务器英语单词字典
7.4、服务器聊天室
8、补充内容
OKOK,Linux网络编程之UDP就到这里,如果你对Linux和C++也感兴趣的话,可以看看我的主页哦。下面是我的github主页,里面记录了我的学习代码和leetcode的一些题的题解,有兴趣的可以看看。
Xpccccc的github主页










