標籤:ref 需要 div word ros 虛擬機器 ndt ges 串連
- windows下的socket網路編程
- clinet.c 用戶端
- server.c 伺服器端
- UDP通訊的實現
- 代碼如下
已經很久沒有在windows下編程了,這次因為需要做一個跨平台的網路程式,就先寫了個簡單的winSocket
網路通訊的例子,以便以後用到的時候有個參考。
windows下使用winsock
編程與linux/unix
的區別在於windows下需要先有一個初始化
的操作,結束的時候需要一個清理
的操作。還有windows下編譯的時候需要串連ws32_lib
庫。
大致過程如下
1、初始化
/*載入Winsock DLL*/
WSADATA wsd;
if (WSAStartup(MAKEWORD(2 , 2) , &wsd) != 0) {
printf("Winsock 初始化失敗!\n");
return 1;
}
2、socket相關函數調用
socket(...)
bind(...)
listen(...)
connect(...)
accept(...)
send/sendto
recv/recvfrom
3、清理
WSACleanup();
clinet.c 用戶端
用戶端的流程很簡單。
- 1、先是使用
socket
函數產生一個開啟的socket
檔案描述符。
- 2、使用
connect
函數去串連服務端
- 3、使用
read/recv
等讀檔案函數從服務端接收資料,使用write/send
等寫檔案的函數向服務端發送資料
上面是典型的TCP
編程流程,如果是UDP
的話不需要connect
去串連服務端直接使用sendto
函數來發送資料,使用recvfrom接收來自伺服器的資料
server.c 伺服器端
伺服器端的流程比用戶端稍微複雜一點
- 1、調用
socket
開啟一個socket控制代碼
- 2、調用
bind
來綁定socket控制代碼到一個網口的某個連接埠
- 3、調用
listen
來設定(啟用)監聽
- 4、調用
accept
來等待用戶端的串連
上面是典型的TCP
編程流程,如果是UDP
的,那麼不需要3,4
這兩部,直接使用recvfrom
來接收用戶端發過來的資料即可。
UDP通訊的實現
我這裡沒有寫TCP
的,因為都是區域網路內,就簡單的寫了個。
這裡是在虛擬機器裡面測試的,代碼見最後。
http://www.cnblogs.com/oloroso/p/4613296.html
windows下的socket網路編程(入門級)