用Connect建立连接时总出现SOCKET ERROR 10056 怎么解决啊? 5
3个回答
展开全部
Socket error 10056 - Socket is already connected // socket已经连接
网路函式通常会有一定的呼叫顺序,有的函式呼叫成功後便不能再呼叫,否则会出现错误。当连接建立时,client程式呼叫()成功,而server程式呼叫accept()成功。此时若client程式再呼叫一次connect()函式的话,会得到WSAEISCONN这个错误,表示该socket已经处於连接状态了。如果client程式呼叫listen()函式的话也会出现这个错误,表示不应该在此时呼叫这个函式。对於server程式,如果socket已经处於连接状态,程式呼叫connect()函式的话,也会得到WSAEISCONN这个错误。
上述错误是发生在stream socket上,因为stream socket才会建立连接。对於datagram socket,多次成功的connect()函式呼叫是被允许的(对於datdgram socket而言,呼叫connect()函式的目的不在於建立连接)。datagram socket发生此错误的原因是在sendto()函式上,当呼叫sendto()传送datagram时,如果对方位址填入INADDR_ANY(“0.0.0.0”)而port填入0(在sockaddr_in结构中),就会导致WSAEISCONN这个错误。
网路函式通常会有一定的呼叫顺序,有的函式呼叫成功後便不能再呼叫,否则会出现错误。当连接建立时,client程式呼叫()成功,而server程式呼叫accept()成功。此时若client程式再呼叫一次connect()函式的话,会得到WSAEISCONN这个错误,表示该socket已经处於连接状态了。如果client程式呼叫listen()函式的话也会出现这个错误,表示不应该在此时呼叫这个函式。对於server程式,如果socket已经处於连接状态,程式呼叫connect()函式的话,也会得到WSAEISCONN这个错误。
上述错误是发生在stream socket上,因为stream socket才会建立连接。对於datagram socket,多次成功的connect()函式呼叫是被允许的(对於datdgram socket而言,呼叫connect()函式的目的不在於建立连接)。datagram socket发生此错误的原因是在sendto()函式上,当呼叫sendto()传送datagram时,如果对方位址填入INADDR_ANY(“0.0.0.0”)而port填入0(在sockaddr_in结构中),就会导致WSAEISCONN这个错误。
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询