- day2
- 一、UDP编程
- 1.编程流程
- 2.函数接口
- 3.注意
- (1)、对于TCP是先运行服务器,客户端才能运行。
- (2)、对于UDP来说,服务器和客户端运行顺序没有先后,因为是无连接,所以服务器和客户端谁先开始,没有关系.
- (3)、一个服务器可以同时连接多个客户端。想知道是哪个客户端登录,可以在服务器代码里面打印IP和端口号。
- (4).UDP,客户端当使用send的时候,上面需要加connect,这个connect不是代表连接的作用,而是指定客户端即将要发送给谁数据。这样就不需要使用sendto而用send就可以。
- (5)、在TCP里面,也可以使用recvfrom和sendto,使用的时候将后面的两个参数都写为NULL就OK。
- 二、广播
- 1.理论
- (1).前面介绍的数据包发送方式只有一个接受方,称为单播 (2).如果同时发给局域网中的所有主机,称为广播 (3).只有用户数据报(使用UDP协议)套接字才能广播 (4).一般被设计成局域网搜索协议
- 2.广播发送流程
- (1).创建数据报套接字
- (2).填充结构体信息(广播ip)
- (3).允许发送广播数据 int opt = 1; setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&opt,sizeof(opt));
- (4).发送数据
- (5).关闭
- 3.广播接收流程
- (1).创建数据报套接字
- (2).填充结构体信息(广播IP)
- (3).绑定
- (4).接收
- (5).关闭
- 4.setsockopt
- 三、组播
- 1.理论
- ●单播方式只能发给一个接收方。
- ●广播方式发给所有的主机。过多的广播会大量占用网络带宽,造成广播风暴,影响正常的通信。
- ●组播是一个人发送,加入到多播组的人接收数据。
- ●多播方式既可以发给多个主机,又能避免象广播那样带来过多的负载(每台主机要到传输层才能判断广播包是否要处理)
- 2.组播地址
- 不分网络地址和主机地址,第1字节的前4位固定为1110 。是D类ip,224.0.0.1~~239.255.255.255。
- 224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用。
- 224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet。
- 224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效。
- 239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
- 3.组播发送流程
- (1).创建用户数据报套接字
- (2).填充结构体(组播IP)
- (3).发送
- (4).关闭
- 4.组播接收流程
- (1).创建用户数据报套接字
- (2).填充结构体(组播IP)
- (3).绑定
- (4).加入多播组
- (5).等待接收数据