根据网上的资源修改的:
#include <stdio.h> #include <string.h> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") int Client(void); int main(int argc, char *argv[]) { return Client(); } int Client(void) { char buffer[1024] = ""; WSADATA wsaData; SOCKET socket1; struct sockaddr_in local; struct sockaddr_in server; int serverlen = sizeof (struct sockaddr_in); if (WSAStartup(MAKEWORD(2,2), &wsaData) != NO_ERROR) { printf("Error at WSAStartup().\n"); return 255; } local.sin_family = AF_INET; local.sin_port = htons(8002);//监听端口 //local.sin_addr.S_un.S_addr = INADDR_ANY;//本机 local.sin_addr.S_un.S_addr = inet_addr("192.168.7.104");//本机 server.sin_family = AF_INET; server.sin_port = htons(8001);//server的监听端口 server.sin_addr.S_un.S_addr = inet_addr("192.168.7.104");//server的地址 socket1 = socket(AF_INET, SOCK_DGRAM, 0); bind(socket1, (struct sockaddr *)&local, sizeof (struct sockaddr_in)); while (1) { printf("Input message:\n"); scanf("%s", buffer); if (strcmp(buffer, "bye") == 0) { break; } if (sendto(socket1, buffer, strlen(buffer), 0, (struct sockaddr *)&server, serverlen) != SOCKET_ERROR) { memset(buffer, 0, sizeof (buffer)); if (recvfrom(socket1, buffer, sizeof (buffer), 0, (struct sockaddr *)&server, &serverlen) != SOCKET_ERROR) { printf("Received from server(%s:%i): %s\n", inet_ntoa(server.sin_addr), ntohs(server.sin_port), buffer); } } } closesocket(socket1); return 0; }