Socket: UDP echo Server
2017-08-27
Programming
玩socket第二篇,使用UDP实现简单的echo服务器。
在第一篇中使用TCP实现了简单的echo服务器,然后就想试试UDP。使用UDP的方法其实是比TCP要简单一些的。
步骤
在使用socket中的UDP进行通信时,服务器进行需要以下几步:
socket()
创建服务器socket
bind()
绑定服务器socket与IP和指定的端口
recvfrom()/sendto()
对连接至客户端的套接字进行读写操作
close()
关闭所有socket
而客户端则需要:
socket()
创建socket
recvfrom()/sendto()
对连接至服务器的套接字进行读写操作
close()
关闭使用的socket
代码
使用时直接使用g++编译,先运行udp_server,再运行udp_client,然后在udp_client中输入内容发送后,就可以接收到udp_server返回的信息,当在udp_client中发送“end”后结束udp_server和udp_client。
服务端:
客户端:
函数
- 创建UDP类型的socket
int udp_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
或 int udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
- AF_INET 指IPv4,AF_INET6 指IPv6
- SOCK_DGRAM 表示无连接的数据传输方式
- 服务器绑定socket与IP和端口:
int bind(int sock, struct sockaddr *addr, socklen_t addrlen);
- UDP接收socket收到的信息:
int recvfrom(int sock, void *buf, int len, unsigned int flags, struct sockaddr *serv_addr, socklen_t *addrlen);
- UDP通过socket发送信息:
int sendto(int sock, void *buf, int len, unsigned int flags, struct sockaddr *serv_addr, socklen_t addrlen);