接続時にクライアントへのサーバー リクエストを自動化しようとしていますが、WSAGetLastError の 10057 が発生し続けます。クライアントからサーバーへのリクエストを問題なく設定したので、逆にできない理由がわかりません。サーバーはクライアントからの最初の「送信」を待たなければならないのかもしれませんが、なぜそうなるのかわかりませんか?
私が使用している: -
非同期ソケット
-TCP
-s は有効なソケットです
-i'v はいくつかのパスで RequestInfo をループしましたが、何も変更されません
-select() は 0
を返します -datasize はエラーコード 10057 で -1 を返します
ありがとうございました !!!
サーバ:
//first - following the debugger
FD_ACCEPT
int acc = accept(s, (struct sockaddr*)&fromm, &fromlenn); //success
if(acc <= 0)
{
eLOGG << "\nFAIL FD_ACCEPT: " << WSAGetLastError();
}
RequestInfo();
//then
RequestInfo()
{
stringstream ssConverter;
ssConverter.clear(); ssConverter.str(string());
ssConverter << "00aa"; //request signal
bool blogin = false;
eLOG << "signal is: *" << ssConverter.str() << "*";
int bufSize = ssConverter.str().length();
fd_set writefds;
struct timeval timeout;
timeout.tv_sec = 3;
timeout.tv_usec = 0;
FD_ZERO(&writefds);
FD_SET(s, &writefds);
int sel = select(s, NULL, &writefds, NULL, &timeout);
if(sel == SOCKET_ERROR)
{
eLOG << "\nselect - read fail: " << WSAGetLastError();
}
if(sel == 0)
{
eLOG << "\nselect - not connected: " << WSAGetLastError();
}
if (FD_ISSET(s, &writefds))
{
eLOG << "\n FD_ISSET";
}
eLOG << "\nauth socket is: " << s;
int dataSize = send(s, ssConverter.str().c_str(), bufSize, 0);
if(dataSize < bufSize)
{
eLOG << "\n FD_ISSET";
}
//...etc
}