背景
从开始写网络的一些编程,只是在上学写过纯socket的代码,很多时候都在用别人封装的工具,纯粹的socket都快忘光了,这里再学习下。
socket服务器端的基本过程
- 1.创建服务器socket
如:
//创建用于internet的流协议(TCP)socket,用server_socket代表服务器socket
int server_socket = socket(PF_INET,SOCK_STREAM,0);
- 2.将socket和socket的地址结构(ip+port)绑定在一起
如:
//把socket和socket地址结构联系起来
bind(server_socket,(struct sockaddr*)&server_addr,sizeof(server_addr))
- 3.监听创建的socket
如:
listen(server_socket, LENGTH_OF_LISTEN_QUEUE)
- 4.接受客户端的请求
如:
while(1) {
//接受一个到server_socket代表的socket的一个连接
//如果没有连接请求,就等待到有连接请求--这是accept函数的特性
//accept函数返回一个新的socket,这个socket(new_server_socket)用于同连接到的客户的通信
//new_server_socket代表了服务器和客户端之间的一个通信通道
//accept函数把连接到的客户端信息填写到客户端的socket地址结构client_addr中
int new_server_socket = accept(server_socket,(struct sockaddr*)&client_addr,&length);
}
socket客户端的基本过程
- 1.绑定一个客户端socket
//创建用于internet的流协议(TCP)socket,用client_socket代表客户机socket
int client_socket = socket(AF_INET,SOCK_STREAM,0);
- 2.绑定本机的地址和端口(不是强制需要这一步)
bind(client_socket,(struct sockaddr*)&client_addr,sizeof(client_addr))
- 3.设置访问的服务器地址和端口
inet_aton(ip_address,&server_addr.sin_addr)
- 4.向服务器发起socket请求
connect(client_socket,(struct sockaddr*)&server_addr, server_addr_length