1.實現linux與windows的共同函式
a.linux平台標頭檔案引用:
#include #include #include #include #include #include #include #include #include #include
b.windows平台標頭檔案引用
#include #include
c.windows平台在建立socket前要載入wsa庫,在關閉socket後要釋放wsa庫,linux平台不用 ,所以為了**相容,需要對同一功能不現平台的差異實現
windows:
通過wsastartup載入wsa庫
#define _sock_init( )
通過wsacleanup釋放wsa庫
#define _sock_exit( )
通過wsagetlasterror捕獲錯誤
Socket實現非阻塞連線
include include include include pragma comment lib,ws2 32.lib define time out time 20 connect超時時間20秒 void geturl char url socket sockfd struct sockadd...
socket阻塞與非阻塞
何為阻塞?在以上過程中若連線還沒到來,那麼接受阻塞,程式執行到這裡不得不掛起,cpu轉而執行其他執行緒。在以上過程中若資料還沒準備好,請閱讀會一樣也會阻塞。阻塞式網路io的特點 多執行緒處理多個連線。每個執行緒擁有自己的棧空間並且占用一些cpu時間。每個執行緒遇到外部為準備好的時候,都會阻塞掉。阻塞...
轉阻塞socket和非阻塞socket
讀操作 對於阻塞的socket,當socket的接收緩衝區中沒有資料時,read呼叫會一直阻塞住,直到有資料到來才返 回。當socket緩衝區中的資料量小於期望讀取的資料量時,返回實際讀取的位元組數。當sockt的接收緩衝 區中的資料大於期望讀取的位元組數時,讀取期望讀取的位元組數,返回實際讀取的長...