[unix] Unix网络编程

本文详细介绍了客户端和服务端的通信流程,包括客户端如何通过创建套接字、建立连接、发送及接收报文来与服务器交互;同时阐述了服务器端如何接受连接请求、处理报文收发等关键步骤。此外还介绍了sockaddr_in结构体的使用方法,如IP地址和端口号在网络字节顺序下的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户端服务流程设计

  1. 标识服务器的地址sockaddr_in
  2. 创建套接字socket
  3. 与服务器建立连接connect(f(socket,sockaddr_in))
  4. 发送报文(send)
  5. 接收报文(recv)
  6. 关闭连接close

服务器端服务流程设计

  1. 创建套接字socket
  2. 确定本地服务端口与ip地址sockaddr_in
  3. 将套接字bind到本地地址sockaddr_in
  4. 使套接字socket处于被动监听状态
  5. 连接到达时利用accept创建新的套接字描述符
  6. 利用新的套接字描述符进行报文的收发
  7. 关闭新的套接字连接
  8. 返回5

关于地址sockaddr_in

struct sockaddr_in{
	u_char sin_len;//无需填写
	u_short sin_family;//地址类型一般为AF_INET
	u_short sin_port;//端口号--网络字节顺序
	struct in_addr sin_addr;//32位ip地址--需转换为网络字节顺序
	char sin_zero[8];
}
1.填写ip地址
主机地址-->网络字节顺序(2进制)  sin_addr=inet_addr("135.254.21.36");
网络字节顺序(2进制)-->主机地址  inet_nota(sin_addr);

域名-->网络字节顺序  memcpy(&sin.sin_addr,phe->h_addr,phe->h_length);
2.填写端口号
//2字节转换
int-->网络字节顺序  sin_port=htons(8080);
网络字节顺序-->int  ntohs(sin_port);
//4字节转换
htonl与ntohl可用于ip地址
3.其他
getserverbyname与getprotobyname
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值