1. 程式人生 > >socket的send函式返回-1(WSAGetLastError返回10057)?

socket的send函式返回-1(WSAGetLastError返回10057)?

問題現象:今天寫一個socket服務端,客戶端connect成功,服務端accept成功,能接收到服務端資料,但就是傳送給客戶端資料時send返回-1。

網上查了查用 WSAGetLastError

 ret1= send(sd, buf, 4, 0);
 ret2 =WSAGetLastError();

ret1返回-1,ret2返回10057,網上說10057是未連線,但的確是連線了,鬱悶!

後來突然發現send的第一個引數填錯了,第一個應該是accept的返回值,而不是建立socket的返回值,修改後ret1返回4,ret2返回0.

百科上這樣說明:

向一個已連線的套介面傳送資料。

int PASCAL FAR send( SOCKET s, const char FAR* buf, int len, int flags);

s:一個用於標識已連線套介面的描述字。

buf:包含待發送資料的緩衝區

len:緩衝區中資料的長度。

flags:呼叫執行方式。