一个最简单的UDP通信

贴在这里主要是做测试代码时直接从这里拷贝,省的一行行去写

服务器:

#include "stdafx.h"
#include "stdio.h"  
#include "Winsock2.h"  
#include "iostream"  
#include "string"  
#pragma comment(lib,"WS2_32.lib")#define OK_STR "OK"  void main()
{int version_a = 1;int version_b = 1;WORD versionRequest = MAKEWORD(version_a, version_b);WSAData wsaData;int err = WSAStartup(versionRequest, &wsaData);if (err != 0){printf("ERROR!");return;}if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1){printf("WRONG WINSOCK VERSION!");WSACleanup();return;}SOCKET socServer = socket(AF_INET, SOCK_DGRAM, 0);SOCKADDR_IN addr_Srv;addr_Srv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);addr_Srv.sin_family = AF_INET;addr_Srv.sin_port = htons(28080);bind(socServer, (SOCKADDR*)&addr_Srv, sizeof(SOCKADDR));SOCKADDR_IN addr_Clt;char recvBuf[100];int fromlen = sizeof(SOCKADDR);while (true){recvfrom(socServer, recvBuf, 100, 0, (SOCKADDR*)&addr_Clt, &fromlen);std::cout << recvBuf << ":" << addr_Clt.sin_port << std::endl;sendto(socServer, OK_STR, strlen(OK_STR) + 1, 0, (SOCKADDR*)&addr_Clt, sizeof(SOCKADDR));}closesocket(socServer);WSACleanup();
}


客户端:

#include "stdafx.h"
#include "Winsock2.h"  
#include "iostream"  
#include "stdio.h"  
#pragma comment(lib, "ws2_32.lib")  void main()
{int version_a = 1;int version_b = 1;WORD versionRequest = MAKEWORD(version_a, version_b);WSAData wsaData;int error = WSAStartup(versionRequest, &wsaData);if (error != 0){printf("ERROR!");return;}if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1){printf("WRONG WINSOCK VERSION!");WSACleanup();return;}char requestStr[100];SOCKET socClient = socket(AF_INET, SOCK_DGRAM, 0);SOCKADDR_IN addrSrv;  addrSrv.sin_addr.S_un.S_addr = inet_addr("47.94.155.26");//47.94.155.26192.168.1.117addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(28080);char cRecvBuf[100];while (true){std::cin >> requestStr;sendto(socClient, requestStr, strlen(requestStr) + 1, 0, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR)); recv(socClient, cRecvBuf, strlen(cRecvBuf) + 1, 0);std::cout << cRecvBuf << std::endl;}closesocket(socClient);WSACleanup();//  return 0;  
}



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部