Socket编程基础——无连接UDP

来源:互联网 发布:rtl8111f 烧录mac地址 编辑:程序博客网 时间:2024/05/17 04:11

与面向连接的网络连接相比,无连接的网络通信不需要在服务器与客户端之间建立连接。面向非连接的Socket通信是基于UDP的,服务器端不需要调用listen()accept()函数来等待客户端的连接;客户端直接向服务器发送数据。

1、服务器端
(1)建立Socket,绑定本地IP和端口

server=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);sAddr.sin_family=AF_INET;sAddr.sin_port=htons(9000);sAddr.sin_addr.s_addr=htonl(ADDR_ANY);retVal=bind(server,(sockaddr*)&sAddr,sizeof(sAddr));

(2)等待客户连接、接收数据

sockaddr_in recvAddr;int len=sizeof(recvAddr);// 连接的客户端地址信息recvfrom(server,buf,BUF_SIZE,0,(sockaddr*)&recvAddr,&len);cout<<"Recv date from "<<inet_ntoa(recvAddr.sin_addr)<<" :"<<buf<<endl;// 接收数据、recvAddr返回客户段信息

(3)发送数据

sendto(server,buf,strlen(buf),0,(sockaddr*)&recvAddr,len);

2、客户端
(1)建立Socket

client=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

(2)远程服务器地址信息

sockaddr_in sAddr;sAddr.sin_family=AF_INET;sAddr.sin_port=htons(9000);sAddr.sin_addr.s_addr=inet_addr("127.0.0.1");int len=sizeof(sAddr);

(3)发送数据

sendto(client,buf,strlen(buf),0,(sockaddr*)&sAddr,len);

(4)接收数据

recvfrom(client,buf,BUF_SIZE,0,(sockaddr*)&sAddr,&len);
0 0
原创粉丝点击