基于Udp的Socket网络编程

来源:互联网 发布:足球大师数据 编辑:程序博客网 时间:2024/05/11 12:38

 

1.新建一个工作空间 Udp 添加两个工程UdpClient 和 UdpSrv

2.在工程UdpSrv中添加UdpSrv.cpp文件

代码如下:

#include <Winsock2.h>#include <stdio.h>void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD (1,1);err = WSAStartup(wVersionRequested , &wsaData);if (err != 0 ){return;}if (LOBYTE (wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1 ){WSACleanup();return;}//基于udp创建数据报套接字//SOCK_STREAM是基于TCP的,数据传输比较有保障,是数据流,一般是tcp/ip协议的编程//SOCK_DGRAM是基于UDP的,专门用于局域网,基于广播,是数据报,是udp协议网络编程SOCKET sockSrv = socket(AF_INET,SOCK_DGRAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));SOCKADDR_IN addrClient;int len = sizeof(SOCKADDR);char recvBuf[100];recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);printf("%s\n",recvBuf);closesocket(sockSrv);WSACleanup();}


 


添加Link库文件 ws2_32.lib

 

3.在工程UdpClient中添加UdpClient.cpp文件

代码如下:

#include <Winsock2.H>#include <stdio.h>void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(1,1);err = WSAStartup(wVersionRequested,&wsaData);if (err != 0){return;}if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1 ){WSACleanup();return;}    //无连接SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(6000);sendto(sockClient,"Hello",strlen("Hello")+1,0,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));closesocket(sockClient);WSACleanup();}

同样添加Link库文件 ws2_32.lib

 

4.先运行服务端程序在运行客户端程序会看到效果 

原创粉丝点击