Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 10:41

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



socket connection status

Discussion on socket connection status within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
socket connection status

und da habe ich wieder ein problem mit den sockets

ich connecte mit einem nonblocking socket zu einem server. soweit alles gut, wenn ich allerdings vom server getrennt werde, bekomme ich das nicht mit.

aktuell versuche ich das so:

Code:
        int r = select(this->m_socket+1,&fdread,&fdwrite,nullptr,&tv);

        if(r<=0)
            return false;
Code:
        r = recv(this->m_socket,this->m_recvBuffer,this->m_recvAllocSize,0);
        if(r<len) {
            if(WSAGetLastError() != WSAEWOULDBLOCK)
                return false;
            else
                return true;
        }
Code:
            if(send(this->m_socket,this->m_sendBuffer,sendLen,0)<sendLen) {
                if(WSAGetLastError() != WSAEWOULDBLOCK)
                    return false;
                else
                    return true;
            }
hab schon ewig gegoogelt, aber es wird dauerhaft true returned.
wireshark sagt mir übrigens auch, dass ich disconnect werde!
Tyrar is offline  
Old 08/21/2012, 15:04   #2
 
link's Avatar
 
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
Steppe den Code doch mal durch, welcher return-Zweig wird denn genommen?

Code:
if(r<len) {
  if(WSAGetLastError() != WSAEWOULDBLOCK)
    return false;
  else
    return true;
}
recv gibt, wenn die Verbindung geschlossen wurde, 0 zurück, was aber kein Fehler ist, sodass sich auch nicht WSAGetLastError benutzen lässt.
Reagiere mal gesondert auf (r = recv(...)) == 0. Oder du guckst, ob im filedescriptor-readability Array dein Client-Socket ist und überprüfst dann via ioctlsocket(this->m_socket, FIONREAD, &count) ob nichts zu empfangen ist, die Verbindung also geschlossen wurde, was die Methode für blocking sockets wäre, um nicht im recv festzustecken.
link is offline  
Old 08/21/2012, 15:53   #3
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Quote:
Originally Posted by link View Post
Steppe den Code doch mal durch, welcher return-Zweig wird denn genommen?

Code:
if(r<len) {
  if(WSAGetLastError() != WSAEWOULDBLOCK)
    return false;
  else
    return true;
}
recv gibt, wenn die Verbindung geschlossen wurde, 0 zurück, was aber kein Fehler ist, sodass sich auch nicht WSAGetLastError benutzen lässt.
Reagiere mal gesondert auf (r = recv(...)) == 0. Oder du guckst, ob im filedescriptor-readability Array dein Client-Socket ist und überprüfst dann via ioctlsocket(this->m_socket, FIONREAD, &count) ob nichts zu empfangen ist, die Verbindung also geschlossen wurde, was die Methode für blocking sockets wäre, um nicht im recv festzustecken.
wenn die verbindung geschlossen wurde ist das kein fehler? wozu sind dann die fehler wie WSAECONNRESET o.ä. da? außerdem returned recv bei mir -1!

jedenfalls funktioniert es jetzt, ty
Tyrar is offline  
Reply


Similar Threads Similar Threads
java.net.socket.exception: Connection reset
06/06/2012 - Minecraft - 4 Replies
Hallo . Ich wollt vorhin auf nen server von nem freund und als miecraft verbinden wollte kam erst die meldung "can't reach server" als ich dann trotzdem auf verbinden gedrückt hab kam die meldung aus der überschrift.Weiß jemand woran das liegt vllt an überlastung oder so ?
Socket Connection VB.NET
02/15/2012 - Metin2 Private Server - 0 Replies
Hello, i'm trying to connect my software at metin2's server, with socket connection. But I do not know when i err.. This is the code: Dim query As String = "@SHOWMETHEMONEY.@EVENT TEST 1." Dim host As IPAddress = Nothing Dim mySock As Socket = Nothing Try If Not IPAddress.TryParse("5.100.136.100", host) Then MessageBox.Show("This IP is not valid")
How do I make the connection status and in-game hours.?
01/15/2012 - Metin2 Private Server - 0 Replies
How do I make the connection status and in-game hours.? Would you please help me if you give game.py ready or you tell? http://a1201.hizliresim.com/t/g/1t4tp.jpg help
How do I make the connection status and in-game hours.?
01/14/2012 - Metin2 Private Server - 0 Replies
How do I make the connection status and in-game hours.? Would you please help me if you give game.py ready or you tell? http://a1201.hizliresim.com/t/g/1t4tp.jpg help :(



All times are GMT +1. The time now is 10:42.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.