Windows 套接字實現通訊

2021-05-09 01:15:56 字數 1985 閱讀 1222

一、客戶機/伺服器模式

在tcp/ip網路中兩個程序間的相互作用的主機模式是客戶機/伺服器模式(client/server model)。該模式的建立基於以下兩點:1、非對等作用;2、通訊完全是非同步的。客戶機/伺服器模式在操作過程中採取的是主動請示方式:

首先伺服器方要先啟動,並根據請示提供相應服務:(過程如下)

1、開啟一通訊通道並告知本地主機,它願意在某乙個公認位址上接收客戶請求。

2、等待客戶請求到達該埠。

3、接收到重複服務請求,處理該請求並傳送應答訊號。

4、返回第二步,等待另一客戶請求

5、關閉伺服器。

客戶方:

1、開啟一通訊通道,並連線到伺服器所在主機的特定埠。

2、向伺服器傳送服務請求報文,等待並接收應答;繼續提出請求……

3、請求結束後關閉通訊通道並終止。

二、基本套接字

為了更好說明套接字程式設計原理,給出幾個基本的套接字,在以後的篇幅中會給出更詳細的使用說明。

1、建立套接字——socket()

功能:使用前建立乙個新的套接字

格式:socket pascal far socket(int af,int type,int procotol);

引數:af: 通訊發生的區域

type: 要建立的套接字型別

procotol: 使用的特定協議

2、指定本地位址——bind()

功能:將套接字位址與所建立的套接字型大小聯絡起來。

格式:int pascal far bind(socket s,const struct sockaddr far * name,int namelen);

引數:s: 是由socket()呼叫返回的並且未作連線的套接字描述符(套接字型大小)。

其它:沒有錯誤,bind()返回0,否則socket_error

位址結構說明:

struct sockaddr_in

3、建立套接字連線——connect()和accept()

功能:共同完成連線工作

格式:int pascal far connect(socket s,const struct sockaddr far * name,int namelen);

socket pascal far accept(socket s,struct sockaddr far * name,int far * addrlen);

引數:同上

4、監聽連線——listen()

功能:用於面向連線伺服器,表明它願意接收連線。

格式:int pascal far listen(socket s, int backlog);

5、資料傳輸——send()與recv()

功能:資料的傳送與接收

格式:int pascal far send(socket s,const char far * buf,int len,int flags);

int pascal far recv(socket s,const char far * buf,int len,int flags);

引數:buf:指向存有傳輸資料的緩衝區的指標。

6、多路復用——select()

功能:用來檢測乙個或多個套接字狀態。

格式:int pascal far select(int nfds,fd_set far * readfds,fd_set far * writefds,

fd_set far * exceptfds,const struct timeval far * timeout);

引數:readfds:指向要做讀檢測的指標

writefds:指向要做寫檢測的指標

exceptfds:指向要檢測是否出錯的指標

timeout:最大等待時間

7、關閉套接字——closesocket()

功能:關閉套接字s

格式:bool pascal far closesocket(socket s);

Socket實現套接字通訊

套接字工作流程 import socket 1 買手機 phone socket.socket 2 繫結手機卡 phone.bind 127.0.0.1 8080 3 開機 phone.listen 5 4 等 連線 conn,addr phone.accept 5 收發訊息 data conn.r...

套接字通訊

利用三元組 ip位址,協議,埠 就可以標識網路的程序 socket即是一種特殊的檔案,一些socket函式就是對其進行的操作 讀 寫io 開啟 關閉 socket是 open write read close 模式的一種實現,那麼socket就提供了這些操作對應的函式介面 tcp通訊中的socket...

套接字通訊

套接字家族的名字 af unix unix一切皆檔案,基於檔案的套接字呼叫的就是底層的檔案系統來取資料,兩個套接字程序執行在同一機器,可以通過訪問同乙個檔案系統間接完成通訊 套接字家族的名字 af inet 還有af inet6被用於ipv6,還有一些其他的位址家族,不過,他們要麼是只用於某個平台,...