[unix] Unix网络编程

客户端服务流程设计

  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

你可能感兴趣的:(old)