在軟體開發中「網路程式設計」是必不可少的基本功了;本文所講的socket程式設計也就是網路程式設計中的一種形式;當然你如果想問我什麼叫「socket」,很遺憾的是我也不能準確的告訴你!但我們可以確定的是sock並不是一種網路協議,它只是乙個網路程式設計介面,也就是說,它不是協議,但是它可以訪問很多種網路協議,你可以把他當作一些協議的封裝。
socket程式設計涉及socket服務端與客戶端程式設計;與vc6下的socket程式設計一樣(vc6用ws2_32.lib庫,而wince則用ws2.lib庫),服務端與客戶端程式設計都需經歷如下步驟:
服務端步驟:
1:載入套接字型檔,建立套接字(wsastartup()/socket());
3:將套接字設定為監聽模式等待連線請求(listen());
4:請求到來後,接受連線請求,返回乙個新的對應於此次連線的套接字(accept());
5:用返回的套接字和客戶端進行通訊(send()/recv());
6:返回,等待另一連線請求;
7:關閉套接字,關閉載入的套接字型檔(closesocket()/wsacleanup())。
客戶端步驟:
1:載入套接字型檔,建立套接字(wsastartup()/socket());
2:向伺服器發出連線請求(connect());
3:和伺服器端進行通訊(send()/recv());
4:關閉套接字,關閉載入的套接字型檔(closesocket()/wsacleanup())。
簡單服務端例子如下:
#include
#pragma comment( lib, "ws2.lib" )
void testsocketserver( void )
socket socksrv=socket(af_inet,sock_stream,0);
sockaddr_in addrsrv;
addrsrv.sin_addr.s_un.s_addr=htonl(inaddr_any);
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons(6000);
bind(socksrv,(sockaddr*)&addrsrv,sizeof(sockaddr));
listen(socksrv,5);
sockaddr_in addrclient;
int len=sizeof(sockaddr);
while(1)
}簡單客戶端例子如下:
#include
#pragma comment( lib, "ws2.lib" )
void testsocketclient( void )
socket sockclient=socket(af_inet,sock_stream,0);
sockaddr_in addrsrv;
addrsrv.sin_addr.s_un.s_addr=inet_addr("127.0.0.1");
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons(6000);
connect(sockclient,(sockaddr*)&addrsrv,sizeof(sockaddr));
send(sockclient,"hello",strlen("hello")+1,0);
char recvbuf[50];
recv(sockclient,recvbuf,50,0);
closesocket(sockclient);
wsacleanup();
}**:
WinCE下Socket程式設計
wince下socket程式設計 wince 不支援win32中socket非同步類 那個mfc類忘記啥名字了 在軟體開發中 網路程式設計 是必不可少的基本功了 本文所講的 socket 程式設計也就是網路程式設計中的一種形式 當然你如果想問我什麼叫 socket 很遺憾的是我也不能準確的告訴你!但...
WinCE基本介紹
windows ce 是為各種嵌入式系統和產品設計的一種壓縮的 具有高效的 可公升級的作業系統 os 其多線性 多工 全優先的作業系統環境是專門針對資源有限而設計的。這種模組化設計使嵌入式系統開發者和應用開發者能夠定做各種產品,例如家用電器,專門的工業控制器和嵌入式通訊裝置。windows ce 支...
Linux下socket程式設計基本知識
本文件主要講解了linux下socket程式設計的一些基本知識,主要包括套接字和位元組序的概念,以及一些常用的結構體和函式。linux網路程式設計 linux網路程式設計 人工智慧物聯網 linux中的網路程式設計通過socket介面實現,socket既是一種特殊的io,提供對應的檔案描述符。乙個完...