1. 服务端
TCP服务端的socket编程:
- 使用
socket函数 创建用于监听的文件描述符 - 使用
setsockopt函数 对监听的文件描述符设置属性(可选,可以设置端口复用之类的属性) - 使用
bind函数 设置监听的文件描述符究竟监听那个IP、哪个端口(一个电脑可能有多张网卡) - 使用
listen函数 对监听的文件描述符进行监听,看看有没有新消息、新连接到来 - 使用
accept函数 创建和客户端的新连接 - 使用
recv函数 收取消息,使用send函数发送消息(read函数/write函数也行) - 使用
close函数 关闭连接 - 使用
close函数 关闭用于监听的文件描述符(服务器关闭时)
UDP服务端的socket编程:
- 使用
socket函数 创建和客户端通信的文件描述符 - 使用
setsockopt函数 对监听的文件描述符设置属性(可选,可以设置端口复用之类的属性) - 使用
bind函数 设置和客户端通信的文件描述符从哪个IP、端口接收消息 - 使用
recvfrom函数 收取客户端的信息,使用sendto函数发送信息 - 使用
close函数 关闭连接 - 使用
close函数 关闭用于和客户端通信的文件描述符
1.1 在服务端的区别总结:
- UDP不需要监听(listen函数)
- UDP不需要创建连接(accept函数)
- UDP获取接收方的信息(IP、端口)是在recvfrom函数,而TCP是在accept函数。
2. 客户端
TCP客户端的socket编程:
- 使用
socket函数 创建可以和服务器通信的文件描述符 - 使用
setsockopt函数 设置该文件描述符的属性(可选,非阻塞之类的属性) - 使用
bind函数 绑定发送信息的IP、端口号(可选,一般不选,让OS自己去决定) - 使用
struct sockaddr_in结构体 指定服务器的IP、端口号 - 使用connect函数与服务器创建连接
- 使用
recv函数 收取消息,使用send函数发送消息(read函数/write函数也行) - 使用
close函数 关闭连接
UDP客户端的socket编程:
- 使用
socket函数 创建和服务器通信的文件描述符 - 使用
setsockopt函数 设置该文件描述符的属性(可选,非阻塞之类的属性) - 使用
bind函数 绑定发送信息的IP、端口号(可选,一般不选,让OS自己去决定) - 使用
struct sockaddr_in结构体 指定服务器的IP、端口号 - 使用
recv函数 收取消息,使用send函数发送消息(read函数/write函数也行) - 使用
close函数 关闭连接
2. 1 客户端的区别总结
- UDP不需要创建连接(connect函数)
- 收发消息使用的函数不同
|