用簡單的**和演示說明了winsocket的使用一般必要步驟。
先看看程式執行的效果吧:
最上面的乙個視窗為服務端,下面的視窗為客戶端,服務端的主迴圈負責接收資料。如果客戶端輸出「exit」字串的話,則服務端和客戶端程式終止。這個示例主要是通過簡單的**讓初學者了解到wsa(winsocketapi)的啟動相關的函式和引數,以及收發相關的兩個函式的使用,最後釋放ws資源。可以理解為乙個最小的c/s演示。
以下為兩個程式的源**,在vs2005下編譯通過。
服務端:
#include
#include //winsocket2 的標頭檔案
#include
#pragma comment(lib, "ws2_32.lib")//winsocket2需要的庫檔案
using namespace std;
int main()
//第五步:接收資料
char
szbuf[1024];
sockaddr_in
addr;
int
nlen = sizeof(addr);
while (true)}}
//第六步:關閉socket,釋放網路
closesocket(sserver);
wsacleanup();
return 0;}
客戶端:
#include
#include
#include
#pragma comment(lib, "ws2_32.lib")
using namespace std;
int main()
} //關閉socket
closesocket(sclient);
wsacleanup();
return 0;
就這麼簡單,乙個簡化的網路程式就寫出來了。當然要完成完備的網路通訊軟體或者其他網路應用軟體要比這個複雜,但是這也是通向複雜的開始。很多朋友接觸網路程式設計的時候,感到很痛苦,因為可能一開始看得程式示例實現的功能比較全面,**量一大反而可能不便於理解,這也是很多人一開始在學網路程式設計時畏懼網路程式設計的原因吧。
這裡面涉及到的wsa(win socket api)函式就是如下幾個:
wsastartup()
socket()
bind()
recvfrom()
sendto()
closesocket()
wsacleanup()
htons()(與其同類的功能還有htonl、ntohs、ntohl都是網路位元組順序和主機位元組順序相互轉換的函式)
然後是幾個結構體。
這樣我們在學起來的時候就清晰了。只要搞清楚上面列舉的幾個函式和其引數的使用,我們網路程式設計的入門第一步就算是完成了。希望我這貼給和我一樣的新手乙個啟發。
我的建議是大家先寫一遍**,在寫的過程中加深印象,然後在看msdn或相關書籍詳細的將每個wsa提供的那幾個函式的說明看一遍,我的方法就是先實際操作一遍,在來看他的原理。這樣最容易學習了。
windows下的網路程式設計
windows下的網路程式設計 做過windows網路程式設計的人都知道,微軟的mfc把複雜的winsock api函式封裝到類裡,這使得編寫網路應用程式更容易。即windows既提供上層的網路api函式也提供底層的api函式。1 對於採用上層的api函式而言 若採用csocket類定義乙個物件ob...
windows下簡單的網路套接字程式設計
1.檔案傳輸 通過建立伺服器客戶端連線,進行檔案傳輸。由客戶端輸入乙個檔名,伺服器搜素,查詢成功後,向客戶端傳輸資料。客戶端接受在當前目錄下建立檔案。include stdafx.h include include include include iostream define maxstrings...
windows下socket 網路通訊程式設計二
該版本在版本一基礎上增加了伺服器反饋功能,實現了伺服器接收成功後給客戶端傳送接收成功訊息。在vc6.0下即可執行成功 windows下socket伺服器程式 include include pragma comment lib,ws2 32.lib int main void wsacleanup ...