Visual C++设计UDP协议通讯示例
一、绪言
UDP是一种面向非连接,不可靠的通讯协议,相对于TCP来说,虽然可靠性不及,但传输效率较高。所以在网络上仍有很大的用途。这几日需要了解下udp通讯的过程,上网发现这方面的资料还挺少。于是仔细的翻找了下msdn,基本上搞清楚了udp通讯的过程。做了一个测试的例子。希望对大家有帮助。
二、UDP的通讯过程
server端: open a socket(socket)--->name the socket(bind)--->send and receive data(sendto recvfrom)--->close socket(closesocket)
client端: open a socket(socket)---------------------------->send and receive data(sendto recvfrom)--->close socket(closesocket)
server端无需listen,client端无需connect,因此udp中server和client的区别相对较模糊。只要调用sendto和recvfrom就可以给指定的地址收发数据,但并不保证收发的数据的完整性和可靠性。
三、示例
udpserver主要代码:
void main()
{
SOCKET socket1;
InitWinsock();
struct sockaddr_in local;
struct sockaddr_in from;
int fromlen =sizeof(from);
local.sin_family=AF_INET;
local.sin_port=htons(1000); ///监听端口
local.sin_addr.s_addr=INADDR_ANY; ///本机
socket1=socket(AF_INET,SOCK_DGRAM,0);
bind(socket1,(struct sockaddr*)&local,sizeof local);
while (1)
{
char buffer[1024]="\0";
printf("waiting for message from others-------------\n");
if (recvfrom(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&from,&fromlen)!=SOCKET_ERROR)
{
printf("Received datagram from %s--%s\n",inet_ntoa(from.sin_addr),buffer);
////给cilent发信息
sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&from,fromlen);
}
Sleep(500);
}
closesocket(socket1);
}
udpcilent主要代码:
void main()
{
SOCKET socket1;
InitWinsock();
struct sockaddr_in server;
int len =sizeof(server);
server.sin_family=AF_INET;
server.sin_port=htons(1000); ///server的监听端口
server.sin_addr.s_addr=inet_addr("168.168.0.10"); ///server的地址
socket1=socket(AF_INET,SOCK_DGRAM,0);
while (1)
{
char buffer[1024]="\0";
printf("input message\n");
scanf("%s",buffer);
if (strcmp(buffer,"bye")==0)
break;
if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR)
{
if (recvfrom(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,&len) != SOCKET_ERROR)
printf("rece from server:%s\n",buffer);
}
}
closesocket(socket1);
}
四、结束语
UDP通讯比TCP简单了很多,在数据可靠性不是很高的情况下,有使用的价值。
分享到:
相关推荐
Visual C++设计UDP协议通讯示例.doc Visual C++设计UDP协议通讯示例.doc Visual C++设计UDP协议通讯示例.doc Visual C++设计UDP协议通讯示例.doc
udpcs.rar 用Visual C++实现的UDP协议
vc++的网络通信 udp协议 可以制作聊天室 局域网实时聊天的工具
Visual C++网络通信协议分析与应用实现代码_基于UDP点对点聊天程序
Visual C++网络通信协议分析之TCP.UDP高级编程.
Visual C++基于TCP UDP编程步骤 要的来看看
包括服务器客户端程序,基于Visual Studio2017实现,编译测试过了,用到的朋友记得关闭SDL检查
UDP receiver for raw
TCP.UDP高级编程,TCP聊天服务器端,UDP点对点聊天,TCP.IP终端程序源代码,端口扫描,超级链接,BBS高级程序开发等等,这只是其中一小部分,里面实例丰富,都附有源码
课程设计——简易网络聊天室。 C++基于MFC开发的UDP网络聊天室。
包括UDP服务器客户端多线程通信程序(用select实现),基于Visual Studio2017实现,已编译测试过,用到的朋友记得关闭SDL检查
全书共分为12章,全面介绍了Visual Studio中Visual C++的编程方法与技巧。第1章主要介绍了Windows编程机制,MFC类库,Windows应用程序框架以及Visual C++ 6.0集成开发环境的使用。从第2章到第12章,采用实例解析的...
在visual C++ 6.0 编译通过 代码有注释
本设计实现的聊天工具要求在Microsoft Visual C++ 6.0上,编写一个程序,采用C/S模式,模拟网络上的聊天软件,实现在局域网上两台主机之间的通信。且经过测试,该聊天程序能够正常运行,实现了设计目标。
udp服务端,实现了udp发送机制
利用Visual C++实现UDP点对点编程,包含所有代码
第一部分 Visual C++ 2010开发与新特性 第1章 Visual C++ 2010开发环境简介 1 1.1 Visual C++ 2010简介 1 1.2 Visual C++ 2010下载安装指南 1 1.3 Visual C++ 2010主要特点与新特性 3 1.4 Visual C++ 2010开发环境...
UDP 协议是无连 接的协议,是 TCP/IP 协议的一种分层协议。通过本设计进一步掌握利用 Visual C++ 进行程序设计的能力和运用面向对象程序设计的思想和方法, 初步掌握开发 一个小型实用系统的基本方法,...
发送IP UDP ICMP数据包的程序 网络编程 Visual C++ 发送IP UDP ICMP数据包的程序 网络编程 Visual C++