MFC socket網路程式設計示例

2021-10-09 08:51:52 字數 4159 閱讀 3562

mfc socket網路程式設計(流程示例)

伺服器端程式:

1、載入套接字型檔

2、建立套接字(socket)。

3、將套接字繫結到乙個本地位址和埠上(bind)。

4、將套接字設為監聽模式,準備接收客戶請求(listen)。

5、等待客戶請求到來;當請求到來後,接受連線請求,返回乙個新的對應於此次連線的套接字(accept)。

6、用返回的套接字和客戶端進行通訊(send/recv)。

7、返回,等待另一客戶請求。

8、關閉套接字。

客戶端程式:

1、載入套接字型檔

2、建立套接字(socket)。

3、向伺服器發出連線請求(connect)。

4、和伺服器端進行通訊(send/recv)。

5、關閉套接字。

伺服器端**如下:

#include

//加裁標頭檔案

#include

//載入標準輸入輸出標頭檔案

void

main()

//載入套接字型檔,加裁失敗則返回 if(

lobyte

( wsadata.wversion )!=1

||hibyte

( wsadata.wversion )!=1

)//如果不是1.1的則退出

socket socksrv=

socket

(af_inet,sock_stream,0)

;//建立套接字(socket)。

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=

htonl

(inaddr_any)

;//轉換unsigned short為網路位元組序的格式 addrsrv.sin_family=af_inet;

addrsrv.sin_port=

htons

(6000);

bind

(socksrv,

(sockaddr*

)&addrsrv,

sizeof

(sockaddr));

//將套接字繫結到乙個本地位址和埠上(bind) listen(socksrv,5);//將套接字設為監聽模式,準備接收客戶請求(listen)。

sockaddr_in addrclient;

//定義位址族

int len=

sizeof

(sockaddr)

;//初始化這個引數,這個引數必須被初始化

while(1

)}

客戶端**如下:

#include

#include

void

main()

if(lobyte

( wsadata.wversion )!=1

||hibyte

( wsadata.wversion )!=1

) socket sockclient=

socket

(af_inet,sock_stream,0)

;//建立套接字(socket)。

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));

//向伺服器發出連線請求(connect)。

char recvbuf[

100]

;//和伺服器端進行通訊(send/recv)。

recv

(sockclient,recvbuf,

100,0)

;printf

("%s\n"

,recvbuf)

;send

(sockclient,

"this is blues_j"

,strlen

("this is blues_j")+

1,0)

;closesocket

(sockclient)

;//關閉套接字。

wsacleanup()

;//必須呼叫這個函式清除引數

}

2.udp型套接字。 伺服器端(接收端)程式:

1、建立套接字(socket)。

2、將套接字繫結到乙個本地位址和埠上(bind)。

3、等待接收資料(recvfrom)。

4、關閉套接字。 客戶端(傳送端)程式:

1、建立套接字(socket)。

2、向伺服器傳送資料(sendto)。

3、關閉套接字。

伺服器端**:

#include

#include

void

main()

if(lobyte

( wsadata.wversion )!=1

||hibyte

( wsadata.wversion )!=1

) socket socksrv=

socket

(af_inet,sock_dgram,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));

sockaddr_in addrclient;

int len=

sizeof

(sockaddr)

;char recvbuf[

100]

;recvfrom

(socksrv,recvbuf,

100,0,

(sockaddr*

)&addrclient,

&len)

;printf

("%s\n"

,recvbuf)

;closesocket

(socksrv)

;wsacleanup()

;}

客戶端**:

#include

#include

void

main()

if(lobyte

( wsadata.wversion )!=1

||hibyte

( wsadata.wversion )!=1

) socket sockclient=

socket

(af_inet,sock_dgram,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);

sendto

(sockclient,

"hello"

,strlen

("hello")+

1,0,

(sockaddr*

)&addrsrv,

sizeof

(sockaddr));

closesocket

(sockclient)

;wsacleanup()

;}

3.聊天程式常用的是udp式套接字。因為tcp的三步握手開銷比較大

MFC Socket網路程式設計 TCP IP

為了更了解網路開發的流程,可以先通過掌握winsock再去掌握別的網路開發庫,掌握傳統的winsock可以對網路開發的架構有乙個清晰框架,初學者可以先從乙個入門的winsock程式開始 服務端 wsadata data word versions makeword 2,0 int iresult w...

MFC Socket程式設計

再此之際,記錄一下自己編寫socket的過程,實現wifi通訊。應用場景 外設系統作為ap模式下的伺服器。電腦端pc軟體作為ap模式下的客戶端。第一步 初始化socket bool csocketport initialize if lobyte wsadata.wversion 1 hibyte ...

MFC Socket網路程式設計之TCP伺服器端

tcp ip與osi7層參考模型的對應關係 osi的第12層也就是物理層 和資料鏈路層 對應於tcp ip的網路介面 osi的第3層網路層對應tcp ip的網路層 osi的傳輸層對應tcp ip的傳輸層 osi的567層也就是會話層,表示層,應用層 對應tcp ip的應用層 osi參考模型並不是真正...