回覆列表
  • 1 # lanfengz3

    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這個錯誤。

  • 中秋節和大豐收的關聯?
  • 怎麼在家做咖啡味的奶油?