UDP網絡通信程序
阿新 • • 發佈:2017-05-16
start inet_addr 接收 star sts lists list brush ket
//服務器端 #include "Winsock2.h" #include "stdio.h" #pragma comment(lib, "ws2_32.lib") int main() { ////////////////////////////////////////加載套接字//////////////////////////////////////////////////// WORD wVersionRequested;//套接字庫版本號 WSADATA wsaData; int err; wVersionRequested = MAKEWORD(2, 2);//定義套接字的版本號 err = WSAStartup(wVersionRequested, &wsaData);//創建套接字 if (err != 0) { return 0; } ///創建套接字失敗處理 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { WSACleanup(); return 0; } SOCKET SrvSock = socket(AF_INET, SOCK_DGRAM, 0);//創建套接字 SOCKADDR_IN SrvAddr; SrvAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//綁定服務端IP地址 SrvAddr.sin_family = AF_INET;//服務端地址族 SrvAddr.sin_port = htons(6001);//綁定服務端端口號 bind(SrvSock, (SOCKADDR*)&SrvAddr, sizeof(SOCKADDR)); int len = sizeof(SOCKADDR); char buff[100]; SOCKADDR ClistAddr; recvfrom(SrvSock, buff, 100, 0, (SOCKADDR*)&ClistAddr, &len);//等待接收客戶端的請求到來 printf("%s\n", buff);//把客戶端發送來的buff信息打印出來 closesocket(SrvSock);//關閉套接字 WSACleanup(); system("pause"); return 0; }
//客戶端程序 #include "Winsock2.h" #include "stdio.h" #pragma comment(lib, "ws2_32.lib") int main() { ////////////////////////////////////////加載套接字//////////////////////////////////////////////////// WORD wVersionRequested;//套接字庫版本號 WSADATA wsaData; int err; wVersionRequested = MAKEWORD(2, 2);//定義套接字的版本號 err = WSAStartup(wVersionRequested, &wsaData);//創建套接字 if (err != 0) { return 0; } ///創建套接字失敗處理 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { WSACleanup(); return 0; } SOCKET ClistSock = socket(AF_INET, SOCK_DGRAM, 0);//創建套接字類型 SOCKADDR_IN SrvAddr; SrvAddr.sin_family = AF_INET;//選擇地址族 SrvAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//服務端的IP地址 SrvAddr.sin_port = htons(6001);//服務端的端口號 sendto(ClistSock, "hello", strlen("hello") + 1, 0, (SOCKADDR*)&SrvAddr, sizeof(SOCKADDR));//往服務端發送"hello"消息 closesocket(ClistSock);//關閉套接字 WSACleanup();// return 0; }
UDP網絡通信程序