Socket编程基础——无连接UDP
2015-01-05 19:29
344 查看
与面向连接的网络连接相比,无连接的网络通信不需要在服务器与客户端之间建立连接。面向非连接的Socket通信是基于UDP的,服务器端不需要调用
1、服务器端
(1)建立Socket,绑定本地IP和端口
(2)等待客户连接、接收数据
(3)发送数据
2、客户端
(1)建立Socket
(2)远程服务器地址信息
(3)发送数据
(4)接收数据
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);
相关文章推荐
- Socket编程基础——无连接UDP
- Socket编程---使用无连接的数据报(UDP) 进行通信(转)
- Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
- 黑马程序员——JAVA基础---网路编程---概述,UDP/TCP对应Socket,小知识点
- Socket编程实践(12) --UDP编程基础
- Socket编程实践(12) --UDP编程基础
- java网络编程基础——UDP通信之DatagramSocket
- 基于UDP(面向无连接)的socket编程
- C++ socket编程基础二(三种Socket:TCP,UDP,原始Socket)
- Socket编程实践(12) --UDP编程基础
- Android编程实现基于局域网udp广播自动建立socket连接的方法
- Socket编程 (连接,发送消息) (Tcp、Udp) - Part1
- Socket编程基础——面向连接TCP
- 网络编程Socket之UDP(二)面向“连接”的UDP
- Linux高级编程复习 第九章 信号量同步_socket网络编程基础_TCP_UDP
- 基于 TCP (面向连接)和无连接UDP协议的 socket 套接字编程
- 黑马程序员--Java基础学习之网络编程(TCP、UDP、Socket、模拟发送和接收数据)
- Socket编程基础——面向连接TCP
- 【HTTP】TCP连接与套接字编程(socket)理论基础
- Java基础 网络编程 Socket UDP TCP URL