基于UDP Socket例子

来源:互联网 发布:大数据时代下的教育 编辑:程序博客网 时间:2024/06/09 17:57

服务端

#include<stdio.h>#include<winsock2.h>#pragma comment(lib,"ws2_32.lib")BOOL InitWinsock();using namespace std;void setcolor(unsigned short zt=7, unsigned short bj=0){HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(h, zt + bj * 0x10);}void main(){SOCKET socket1;InitWinsock();sockaddr_in local, 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, (sockaddr*)&local, sizeof local);while (1){char buffer[1024] = "\0";printf("waiting for message from others---\n");if (recvfrom(socket1, buffer, sizeof(buffer), 0, (sockaddr*)&from, &fromlen) != SOCKET_ERROR){setcolor(0x0a,0x4);printf("Received datagram from %s--%s\n", inet_ntoa(from.sin_addr), buffer);sendto(socket1, "send successful", sizeof("send successful"), 0, (sockaddr*)&from, fromlen);setcolor();}Sleep(500);}closesocket(socket1);}BOOL InitWinsock(){int Error;WORD VersionRequested;WSADATA WsaData;VersionRequested = MAKEWORD(2, 2);Error = WSAStartup(VersionRequested, &WsaData);if (Error != 0){return FALSE;}else{if (LOBYTE(WsaData.wHighVersion) != 2 || HIBYTE(WsaData.wHighVersion) != 2){WSACleanup();return FALSE;}}return FALSE;}
客户端

#include<winsock2.h>#include<stdio.h>#include<time.h>#include<string.h>#pragma comment(lib,"ws2_32.lib")//BOOL InitWinsock();void main(){SOCKET socket1;HWND q;q = FindWindow(NULL, "QQ");SetWindowText(q, "XX");SetWindowPos(q, NULL, 0, 0, 250, 250, NULL);MEMORYSTATUS mem;char neicun[30];mem.dwLength = sizeof(mem);GlobalMemoryStatus(&mem);wsprintf(neicun, "Total memory:%dM", mem.dwTotalPhys / 1024 / 1024 + 1);char nameqz[30]="computer name:";TCHAR name[1024];DWORD namelen = sizeof(name);GetComputerName(name, &namelen);strcat(nameqz, name);//InitWinsock();WSADATA wsa;WSAStartup(MAKEWORD(2, 2), &wsa);sockaddr_in server;int len = sizeof(server);time_t t;char tmp[32] = { 0 };t = time(0);strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S", localtime(&t));server.sin_family = AF_INET;server.sin_port = htons(1000);server.sin_addr.s_addr = inet_addr("192.168.1.5");socket1 = socket(AF_INET, SOCK_DGRAM, 0);char a[64] = "host active-";strcat(a, tmp);sendto(socket1, a, sizeof(a), 0, (sockaddr*)&server, len);sendto(socket1, nameqz, sizeof(nameqz), 0, (sockaddr*)&server, len);sendto(socket1, neicun, sizeof(neicun), 0, (sockaddr*)&server, len);while (1){char buffer[1024] = "\0";printf("input message\n");gets_s(buffer);if (strcmp(buffer, "bye") == 0){break;}if (sendto(socket1, buffer, sizeof(buffer), 0, (sockaddr*)&server, len) != SOCKET_ERROR){if (recvfrom(socket1, buffer, sizeof(buffer), 0, (sockaddr*)&server, &len) != SOCKET_ERROR){printf("rece from server:%s\n", buffer);}}}closesocket(socket1);}/*BOOL InitWinsock(){int Error;WORD VersionRequested;WSADATA WsaData;VersionRequested = MAKEWORD(2, 2);Error = WSAStartup(VersionRequested, &WsaData);if (Error != 0){return FALSE;}else{if (LOBYTE(WsaData.wVersion) != 2 || HIBYTE(WsaData.wHighVersion) != 2){WSACleanup();return FALSE;}}return TRUE;}*/