0
Winsock2のsend()関数に問題が発生しました。どのようなデータを提供しても、send()関数は常に0を返します。例えば0バイトが送信され、エラーは発生しません。私はしばらくの間Googleを検索しましたが、まだ解決策を見つける必要がありません。私は送信されているデータが正しくフォーマットされていることを確認しました。有効なソケットを渡しています。ここで WinSockのsend()は常に0バイトを返します。
はバグが常駐コードのスニペットです(私は、少なくとも思うだろう)://Send HTTP header to server
#define MAX_HEADER_LEN 512
#ifdef UNICODE
char* cpHost = (char*)malloc(sizeof(char) * (_tcslen(cpServer)+1));
wcstombs(cpHost, cpServer, _tcslen(cpServer));
cpHost[_tcslen(cpServer)] = '\0';
#else
char* cpHost = cpServer;
#endif
char cpHeader[MAX_HEADER_LEN];
sprintf(cpHeader, "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n", "/", cpHost);
#ifdef UNICODE
free(cpHost);
#endif
//Send the HTTP request to the sever
int iSent;
if(iSent = send(servSocket, cpHeader, strlen(cpHeader), 0) == SOCKET_ERROR)
{
_tprintf(TEXT("Error sending header to server: %d\n"), WSAGetLastError());
WSACleanup();
return 2;
}
_tprintf(TEXT("Sent '%d' bytes\n"), iSent);
return 0;
この動作を引き起こしているものを任意のアイデアは?あなたのコードは成功時にゼロにiSent
を設定 --Dylan
うん、偽C.
の変更ではゼロです。奇妙なことに、私は前にその技術を使っていて、問題がないと誓っていたかもしれません。いずれにしても、助けてくれてありがとう! – dymk
@Dylan:あなたはダビデの答えを受け入れるつもりですよね? :) –
申し訳ありません。それを受け入れる前に5 minuetsを待たなければなりませんでした。受け入れられました。 – dymk