winsock 简单的通信
2021-05-04 09:27
标签:winsock 头文件 #include #include #include #include #include #pragma comment(lib, "WS2_32.lib") 源代码 // 初始化 Winsock WSADATA wsaData; int iResult; iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) { printf("WSAStartup failed: %d\n", iResult); return NULL; } // 获取连接属性 struct addrinfo * result = NULL, *ptr = NULL, hints; ZeroMemory(&hints, sizeof(hints)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; iResult = getaddrinfo("192.168.0.18", "7002", &hints, &result); //iResult = getaddrinfo("192.168.37.187", "7002", &hints, &result); if (iResult != 0) { printf("getaddrinfo failed: %d\n", iResult); WSACleanup(); return NULL; } // 创建 Socket 对象 ptr = result; SOCKET ConnectSocket = INVALID_SOCKET; ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol); if (ConnectSocket == INVALID_SOCKET) { printf("Error at socket(): %ld\n", WSAGetLastError()); freeaddrinfo(result); WSACleanup(); return NULL; } // 链接 iResult = connect(ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen); if (iResult == SOCKET_ERROR) { printf("Error at socket(): %ld\n", WSAGetLastError()); closesocket(ConnectSocket); ConnectSocket = INVALID_SOCKET; } int nSendBuf = 32 * 1000;//设置为32K setsockopt(ConnectSocket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&nSendBuf, sizeof(int)); // Should really try the next address returned by getaddrinfo // if the connect call failed // But for this simple example we just free the resources // returned by getaddrinfo and print an arror message //freeaddrinfo(result); if (ConnectSocket == INVALID_SOCKET) { printf("Unable to connect to server!\n"); WSACleanup(); return NULL; } send(ConnectSocket, strSendContext.c_str(), strSendContext.length(), 0); char szbuffer[1024] = { 0 }; recv(ConnectSocket, szbuffer, 1024, 0); ::closesocket(ConnectSocket); 说明 当前内嵌代码进行自动化测试 winsock 简单的通信 标签:winsock 原文地址:http://fengyuzaitu.blog.51cto.com/5218690/1975282
上一篇:c#之观察者模式