socket連線伺服器立即返回,不用三次握手

2022-03-28 03:24:03 字數 703 閱讀 7572

因為預設用socket的connect去連線需要三次握手,時間比較長,所以為了提高效率,有一種方法可以解決:

unsigned long imode = 1;

fd_set write,err;

ioctlsocket(sock,fionbio,&imode); //先將socket設定為非阻塞的,

connect(sock,(struct sockaddr *)addr,sizeof(addr));//然後去連線,它會立即返回,並不等待確認是否連線成功。

imode = 0;

ioctlsocket(sock,fionbio,&imode); //再將socket設定為阻塞的

fd_zero(&write);//清零操作

fd_zero(&err);

fd_set(sock,&write);//將sock加入write和err集合中  

fd_set(sock,&err);

select(sock,null,&write,&err,&timeout);//將無效的sock從相應的各個集合中除去,其中關於select函式的各個引數說明請檢視相關文件,在linux和windows下使用是有差別的

if(fd_isset(sock,&write))//如果sock還在write集合中,說明它可寫,也就說明了連線成功,否則連線失敗

return trun;

return false;

socket伺服器簡易連線

1.socket 建立socket偽檔案生成檔案描述符fd 2.bind 給fd繫結埠和ip 3.listen 給當前socket設定最大客戶端鏈結 4.accept 阻塞等待客戶端連線 生成客戶端的fd,addr結構體 客戶端埠,ip等內容 5.read 讀資料 6.write 寫資料 7.clo...

socket伺服器 前後端連線

客戶端 html結構 text sendserver send js const ws new websocket ws localhost 8080 引數是要連線的伺服器位址 已經連線 ws.onopen 前端接受伺服器訊息 ws.onmessage msg 錯誤的時候觸發 ws.onerror ...

採用Socket方式,測試伺服器連線

資料庫連線操作,可替換為你自己的程式 連線字串 private static bool testconnection string connectionstring catch exception ex return result region 採用socket方式,測試伺服器連線 採用socket...