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 281

Tengrist

Mapper
Mapper
Yardımsever Üye
MT Üye
Mesaj
1.747
Çözümler
44
Beğeni
1.733
Puan
1.329
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
 
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst