我对网络非常陌生,并且在一段时间循环期间发送消息时遇到问题。
据我所知,我应该按照以下方式做一些事情:
Create Socket()
Connect()
While
Do logic
Send()
End while
Close Socket()
但是它发送一次并在之后返回-1。
该代码仅在我在循环中创建套接字时才有效。
While
Create Socket()
Connect()
Do logic
Send()
Close Socket()
End while
这是我正在使用但不起作用的代码部分:
//init winsock
WSAStartup(MAKEWORD(2, 0), &wsaData);
//open socket
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
//connect
memset(&serveraddr, 0, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = inet_addr(ipaddress);
serveraddr.sin_port = htons((unsigned short) port);
connect(sock, (struct sockaddr *) &serveraddr, sizeof(serveraddr));
while(true) {
if (send(sock, request.c_str(), request.length(), 0)< 0 /*!= request.length()*/) {
OutputDebugString(TEXT("Failed to send."));
} else {
OutputDebugString(TEXT("Activity sent."));
}
Sleep(30000);
}
//disconnect
closesocket(sock);
//cleanup
WSACleanup();
函数 CheckForLastError() 返回:10053
WSAECONNABORTED 软件导致连接中止。已建立的连接被主机中的软件中止,可能是由于数据传输超时或协议错误
谢谢