私はネットワークに非常に慣れておらず、whileループ中にメッセージを送信する際に問題があります。
私の知る限り、私はこれに沿って何かをすべきです:
Create Socket()
Connect()
While
Do logic
Send()
End while
Close Socket()
ただし、1回送信し、その後-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ソフトウェアにより接続が異常終了しました。確立された接続は、おそらくデータ送信のタイムアウトまたはプロトコルエラーが原因で、ホストコンピューターのソフトウェアによって中止されました
ありがとう