Connect ile alakalı bir client düzeltmesi

  • Konuyu açan Konuyu açan Tengrist
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 0
  • Gösterim Gösterim 129

Tengrist

Yardımsever Üye
Yardımsever Üye
MT Üye
Mesaj
1.305
Çözümler
41
Beğeni
1.085
Puan
1.309
Ticaret Puanı
0
C++:
Genişlet Daralt Kopyala
Locale_inch ekle:
#define ENABLE_CONNECT_FIX

Eterlib/NetStream.cpp içinde bul:
    if (connect(m_sock, (PSOCKADDR)&m_addr, m_addr.GetSize()) == SOCKET_ERROR)
    {
        int error = WSAGetLastError();

        if (error != WSAEWOULDBLOCK)
        {
            Tracen("error != WSAEWOULDBLOCK");
            Clear();
            OnConnectFailure();
            return false;
        }
    }

Değiştir:
#ifdef ENABLE_CONNECT_FIX
    if (connect(m_sock, reinterpret_cast<PSOCKADDR>(&m_addr), m_addr.GetSize()) == SOCKET_ERROR)
    {
        int error = WSAGetLastError();

        if (error != WSAEWOULDBLOCK)
        {
            Sleep(1000);
            Clear();
            m_sock = socket(AF_INET, SOCK_STREAM, 0);
            if (m_sock == INVALID_SOCKET)
            {
                Clear();
                OnConnectFailure();
                return false;

            }

            ioctlsocket(m_sock, FIONBIO, &arg);
            if (connect(m_sock, reinterpret_cast<PSOCKADDR>(&m_addr), m_addr.GetSize()) == SOCKET_ERROR)
            {
                Tracen("error != WSAEWOULDBLOCK");
                Clear();
                OnConnectFailure();
                return false;
            }
        }
    }
#else
    if (connect(m_sock, (PSOCKADDR)&m_addr, m_addr.GetSize()) == SOCKET_ERROR)
    {
        int error = WSAGetLastError();

        if (error != WSAEWOULDBLOCK)
        {
            Tracen("error != WSAEWOULDBLOCK");
            Clear();
            OnConnectFailure();
            return false;
        }
    }
#endif
 
Geri
Üst