用socket來從伺服器拿資料

2021-06-04 15:19:44 字數 1185 閱讀 3392

用到的技術:socket. 

用到的工具:  vs2008

因為我們是客戶端,所以我們只需要建立與伺服器端的socket,傳送請求,處理返回的包就可以了。

q1:本人一開始不懂socket,從網上尋找到可以跨平台的socket**,但是不知道函式呼叫順序。

a1:首先要在windows下面初始化winsock,可以使用wsastartup。然後建立socket,連線伺服器和埠,接著就可以send/recv了。

q2:  需要向某乙個url傳送請求命令,但是不知get頭應該如何組合。

a2:參考 即可。注意get最後要有乙個空行,既最後一定是\r\n\r\n.我的命令是char sendbuf = "get /stablewsdiscoveryendpoint/schemas-xmlsoap-org_ws_2005_04_discovery http/1.1\r\n\r\n";

q3:  接受資料報的時候,最後總會丟掉一部分內容。

a3:這個是我使用的socket是在同步模式。解決方法有2:1,讓你的buff足夠大,一次就可以完全接受完資料報的內容。2,使用非同步模式的socket,可以參考我這裡使用的是加大我的buff,這樣可以最簡單最方便的處理這個問題。

跨平台socket實現: 

收發資料報實現:

用非阻塞socket來從伺服器拿資料

關於如何使用阻塞socket來從伺服器拿資料請參考 修改阻塞socket到非阻塞的socket的注意事項 1.非阻塞的socket的是在阻塞的socket的基礎上設定標識而成。2.使用非阻塞的socket的時候要注意,send完命令之後不能立即recv,這個時候資料還沒到,需要用select來判斷資...

伺服器模型 socket

伺服器模型 一 迴圈伺服器 迴圈伺服器在同一時刻只可以相應乙個客戶端請求 二 併發伺服器 併發伺服器在同一時刻可以相應多個客戶端的請求.迴圈伺服器 1.udp伺服器 udp迴圈伺服器的實現非常簡單 udp伺服器每次從套接字上讀取乙個客戶端的請求,處理,然後將結果返回給客戶機.可以用下面的演算法來實現...

用socket實現的檔案伺服器 5

資料報內容解析 author hongsoft public class packetparserthread extends thread public void run else catch ioexception e finally catch ioexception e 中間全部用ox1e分...