WinCE下Socket程式設計

2021-05-22 01:27:51 字數 2927 閱讀 7704

wince下socket程式設計

wince 不支援win32中socket非同步類(那個mfc類忘記啥名字了)

在軟體開發中「網路程式設計」是必不可少的基本功了;本文所講的

socket

程式設計也就是網路程式設計中的一種形式;當然你如果想問我什麼叫「

socket

」,很遺憾的是我也不能準確的告訴你!但我們可以確定的是

sock

並不是一種網路協議,它只是乙個網路程式設計介面,也就是說,它不是協議,但是它可以訪問很多種網路協議,你可以把他當作一些協議的封裝。

socket

程式設計涉及

socket

服務端與客戶端程式設計;與

vc6下的

socket

程式設計一樣

(vc6

用ws2_32.lib

庫,而wince

則用ws2.lib庫)

,服務端與客戶端程式設計都需經歷如下步驟:

服務端步驟:1

:載入套接字型檔,建立套接字

(wsastartup()/socket());

2:繫結套接字到乙個

ip位址和乙個埠上

(bind());

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程式設計的相關步驟與實現例子,當然在實際的應用中光靠這個些是遠夠的,因為還有更的東西需要我們去處理(比如出錯了怎麼辦?怎麼設定相關超時等);下面我本人寫的乙個簡單tcp客戶端類,本類適應與wince、winmobile、pocketpc等平台;至於本類的使用方法請台見本文對應例子**;本類所在標頭檔案內容如下:

//stcpclient.h

#ifndef

******_tcp_client_h

#define

******_tcp_client_h

#include

#define

tcpclient_status_notinit0

#define

tcpclient_status_inited1

#define

tcpclient_status_connected 2

#define

tcpclient_status_closed3

typedef

struct tcp_kpalive,*ptcp_keepalive;

class

cstcpclient ;

#endif

WinCE下Socket基本函式

在軟體開發中 網路程式設計 是必不可少的基本功了 本文所講的socket程式設計也就是網路程式設計中的一種形式 當然你如果想問我什麼叫 socket 很遺憾的是我也不能準確的告訴你!但我們可以確定的是sock並不是一種網路協議,它只是乙個網路程式設計介面,也就是說,它不是協議,但是它可以訪問很多種網...

windows 下socket 程式設計

111111windows 下用microsoft visual studio 2005 編寫socket程式 windows 下實現同步socket程式設計,和linux下有許多相同的地方,基本的socket流程完全相同,所有的socket 相關的函式都在 winsock.h 中宣告 還有wind...

linux下socket程式設計

一 什麼是socket socket可以看成是使用者程序與核心網路協議棧的程式設計介面。socket不僅可以用於本機的程序間通訊,還可以用於網路上不同主機的程序間通訊。socket api是一層抽象的網路程式設計介面,適用於各種底層網路協議,如ipv4 ipv6。struct sockaddr in...