【1】概念
【2】程序流程
【3】相关函数
1)创建套接字
2)绑定网络信息结构体
3)接受数据
4)发送数据
【4】项目:基于udp 的网络聊天室
【1】概念
UDP(User Datagram Protocol即用户数据报协议):面向无连接的,不可靠的,不保证分组顺序到达的网络服务
【2】程序流程
(1)服务器:
创建套接字 socket( )
填充服务器网络信息结构体 sockaddr_in
将套接字与服务器网络信息结构体绑定 bind( )
进行通信 recvfrom( )/sendto( )
(2)客户端:
创建套接字 socket( )
填充服务器网络信息结构体 sockaddr_in
进行通信 sendto( )/recvfrom( )
使用socket创建sockfd时应使用SOCK_DGRAM 数据报套接字 udp
shell指令 nc 选项 服务器的IP地址 端口号(客户端)加 -u 代表UDP 不加代表TCP
加 -l 代表服务器 不加代表客户端
模拟的是回声服务器作用
【3】相关函数
1)创建套接字
2)绑定网络信息结构体
3)接受数据
注意:与accept类似,在定义socklen_t addrlen =sizeof(struct sockaddr); 取地址传参,必须先初始化,在不对len进行初始化时,recvfrom第一次接受的数据,内核处理会根据当前len值即乱码进行数据处理,得到的地址信息结构体数据也为乱码。之后,内核知晓地址信息结构体大小,会对len值进行修改,即第二次之后得到的地址信息结构体为正确的。未初始化时,如果变量内值为正数,则可以正常输出,但值不正确,但若变量内值为负值,内核无法处理,则会直接报错。
4)发送数据
【4】项目:基于udp 的网络聊天室
功能:
当有人登陆时,其他在线的人可以收到这个人的登录信息当有人发消息时,其他在线用户可以接受到这个信息当有人退出时,其他人可以收到这个人的退出信息服务器可以发送系统信息
服务器端:
如何实现端对端的通信:
由服务器通知在线人员,然后客户端选择与谁通信
可以在服务器的存储链表中增加一个成员变量,用来标识每一个成员,而后根据客户端的选择进行通信在服务器发送消息的功能中,首先判断客户端是发送单聊或是群聊
服务器: