freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于tcp/ip上的socket編程接口技術(shù)及應(yīng)用(已改無錯字)

2022-12-30 21:45:48 本頁面
  

【正文】 onnect(SOCKET s, const struct sockaddr FAR * name, int namelen)。 參數(shù) s 是欲建立連接的本地套接字描述符。參數(shù) name 指出說明對方套接字地 址結(jié)構(gòu)的指針。對方套接字地址長度由 namelen 說明。 如果沒有錯誤發(fā)生,connect()返回 0。否則返回值 SOCKET_ERROR。在面向連接的協(xié)議中,該調(diào)用導(dǎo)致本地系統(tǒng)和外部系統(tǒng)之間連接實際建立。 由于地址族總被包含在套接字地址結(jié)構(gòu)的前兩個字節(jié)中,并通過 socket()調(diào)用與某個協(xié)議族相關(guān)。因此 bind()和 connect()無須協(xié)議作為參數(shù)。 accept()的調(diào)用格式如下: SOCKET PASCAL FAR accept(SOCKET s, struct sockaddr FAR* addr, int FAR* addrlen)。 參數(shù) s 為本地套接字描述符,在用做 accept()調(diào)用的參數(shù)前應(yīng)該先調(diào)用過listen()。 addr 指向客戶方套接字地址結(jié)構(gòu)的指針,用來接收連接實體的地址。 addr的確切格式由套接字創(chuàng)建時建立的地址族決定。 addrlen 為客戶方套接字地址的長度(字節(jié)數(shù))。如果沒有錯誤發(fā)生, accept()返回一個 SOCKET 類型的值,表示接收到的套接字的描述符。否則返回值 INVALID_SOCKET。 accept()用于面向連接服務(wù)器。參數(shù) addr 和 addrlen 存放客戶方的地址信息。調(diào)用前,參數(shù) addr 指向一個初始值為空的地址結(jié)構(gòu),而 addrlen 的初始值為 0;調(diào)用 accept()后,服務(wù)器等待從編號為 s 的套接字上接受客戶連接請求,而連接請求是由客戶方的 connect()調(diào)用發(fā)出的。當有連接請求到達時, accept()調(diào)用將請求連接隊列上的第一個客戶方套接字地址及長度放入 addr 和 addrlen,并創(chuàng)建一個與 s 有相同特性的新套接字號。新的套接字可用于處理服務(wù)器并發(fā)請求。 四個套接字系統(tǒng)調(diào)用, socket()、 bind()、 connect()、 accept(),可以完成一個完全五元相關(guān)的建立。 socket()指定五元組中的協(xié)議元,它的用法與是否為客戶 16 或服務(wù)器、是否面向連接無關(guān)。 bind()指定五元組中的本地二元,即本地主機地址和端口號,其用法與是否面向連接有關(guān):在服務(wù)器方,無論是否面向連接,均要調(diào)用 bind();若采用面向連接,則可以不調(diào)用 bind(),而通過 connect()自動完成。若采用無連接,客戶方必須使用 bind()以獲得一個唯一的地址。 監(jiān)聽連接── listen() 此調(diào)用用于面向連接服務(wù)器,表明它愿意接收 連接。 listen()需在 accept ()之前調(diào)用,其調(diào)用格式如下: int listen(SOCKET s, int backlog)。 參數(shù) s 標識一個本地已建立、尚未連接的套接字號, 服務(wù)器愿意從它上面接收請求。 backlog 表示請求連接隊列的最大長度, 用于限制排隊請求的個數(shù),目前允許的最大值為 5。如果沒有錯誤發(fā)生, listen()返回 0。否則它返回SOCKET_ERROR。 listen()在執(zhí)行調(diào)用過程中可為沒有調(diào)用過 bind() 的套接字 s 完成所必須的連接,并建立長度為 backlog 的請求連接隊列。 調(diào)用 listen()是服務(wù)器接收一個連接請求的四個步驟中的第三步。它在調(diào)用socket() 分配一個流套接字,且調(diào)用 bind()給 s 賦于一個名字之后調(diào)用,而且一定要在 accept()之前調(diào)用。 數(shù)據(jù)傳輸── send()與 recv() 當一個連接建立以后,就可以傳輸數(shù)據(jù)了。常用的系統(tǒng)調(diào)用有 send() 和recv()。 send() 調(diào)用用于在參數(shù) s 指定的已連接的數(shù)據(jù)報或流套接字上發(fā)送輸出數(shù)據(jù),格式如下: int send(SOCKET s, const char FAR *buf, int len, int flags)。 參數(shù) s 為已連接的本地套接字描述符。 buf 指向存有發(fā)送數(shù)據(jù)的緩沖區(qū)的指針,其長度由 len 指定。 flags 指定傳輸控制方式,如是否發(fā)送帶外數(shù)據(jù)等。如果沒有錯誤發(fā)生, send()返回總共發(fā)送的字節(jié)數(shù)。否則它返回 SOCKET_ERROR。 recv()調(diào)用用于在參數(shù) s 指定的已連接的數(shù)據(jù)報或流套接字上接收輸入數(shù)據(jù),格式如下: int recv(SOCKET s, char FAR *buf, int len, int flags)。 17 參數(shù) s 為已連接的套接字描述符。 buf 指向接收輸入數(shù)據(jù)緩沖區(qū)的指針,其長度由 len 指定。 flags 指定傳輸控制方式,如是否接收帶外數(shù)據(jù)等。如果沒有錯誤發(fā)生, recv()返回總共接收的字節(jié)數(shù)。如果連接被關(guān)閉,返回 0。否則它返回 SOCKET_ERROR。 關(guān)閉套接字── closesocket() closesocket()關(guān)閉套接字 s,并釋放分配給該套接字的資源;如果 s 涉及一個打開的 TCP 連接,則該連接被釋放。 closesocket()的調(diào)用格式如下: 圖 客戶機 /服務(wù)器 Socket通訊的工作模式 創(chuàng)建服務(wù)器端 Socket 服務(wù)器端 Socket登記某端口 監(jiān)聽來自客戶端的連接請求 阻塞直到客戶端發(fā)來連接請求 接收來自于客戶端的請求數(shù)據(jù) 處理請求數(shù)據(jù) 返回處理的數(shù)據(jù)客戶端 接收響應(yīng)數(shù)據(jù) 創(chuàng)建客戶端 Socket 通過服務(wù)器端的地址 和端口號向服務(wù)器端發(fā)出連接請求 發(fā)送請求數(shù)據(jù)到服務(wù)端 18 套接字客戶 /服務(wù)器編寫流程 服務(wù)器程序?qū)崿F(xiàn)的過程 ( 1)服務(wù)器程序必須設(shè)置好 LocalPort 屬性,作為偵聽端口,該值為一個整數(shù)(只要是一個其它 TCP/IP 應(yīng)用程序沒有使用過的值即可)。 ( 2) 使用 Listen 方法進入偵聽狀態(tài),等待客戶機程序的連接請求。 ( 3)客戶機程序發(fā)出連接請求,使服務(wù)器程序產(chǎn)生 ConnectionRequest 事件,該事件得到一個參數(shù) requestID。 ( 4)服務(wù)器程序用 Accept 方法接受客戶機程序的 requestID 請求。這樣,服務(wù)器程序就可以用 SendData 方法發(fā)送數(shù)據(jù)了。 Accept 方法必須用上一步得到的 requestID 作為其參數(shù)。 ( 5)當服務(wù)器程序接收到數(shù)據(jù)時,產(chǎn)生 DataArrival 事件,參數(shù) BytesTotal包含接收到的數(shù)據(jù)字節(jié)數(shù)。在該事件中,可以用 GetData 方法接收數(shù)據(jù)。 ( 6)如果接受到 Close 事件,則用 Close 方法關(guān)閉 TCP/IP 連接 [1]. 服務(wù)器程序的源代碼如下: Private Sub Command1_Click() If IsConnectionOpen = False Then MsgBox 未建立連接 ! 如果未建立連接,就彈出這么一個對話框 Else Socket //發(fā)送數(shù)據(jù) End If End Sub Private Sub Form_Load() = 1111 39。Socket //在程序啟動時監(jiān)聽端口 1111 = False IsConnectionOpen = False //開始狀態(tài)為未連接 End Sub 19 Private Sub Winsock1_Close() //對方 Socket 關(guān)閉觸發(fā)這個事件 //關(guān)閉自己 End End Sub Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) //接收到對方連接請求觸發(fā)這個事件 If sckClosed Then //使 Socket 在接收連接請求之前保持關(guān)閉狀態(tài) requestID //Winsock1 自己接收連接請求,與客戶端 Socket建立連接 IsConnectionOpen = True = True 連接成功 End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) //收到數(shù)據(jù)觸發(fā)這個事件 Dim str As String str //收到數(shù)據(jù)時, Winsock1 把數(shù)據(jù)寫入緩存 str = + str + Chr (13) + Chr (10) = Len () //在文本框中顯示接收的數(shù)據(jù) End Sub 客戶機程序?qū)崿F(xiàn)的過程 ( 1) 客戶程序設(shè)置 Remotehost 屬性 ,以便指定運行服務(wù)器程序的主機 名,該字符串可在 “控制面板 |網(wǎng)絡(luò) |標識 |計算機名 ”中查到。 ( 2)設(shè)置 RemotePort 屬性 ,以便指定服務(wù)器程序的偵聽端口。 ( 3)使用 Connect 方法,向服務(wù)器提出連接請求。 ( 4) 服務(wù)器接受客戶機程序的請求,客戶機程序產(chǎn)生 Connect 事件,就可以用 SendData 方法發(fā)送數(shù)據(jù)了。 ( 5) 當客戶機程序接收到數(shù)據(jù)時,產(chǎn)生 DataArrival 事件,參數(shù) BytesTotal 20 包含接收到的數(shù)據(jù)字節(jié)數(shù)。在該事件中,可以用 GetData 方法接收數(shù)據(jù)。 ( 6)如果接受到 Close 事件,則用 Close 方法關(guān)閉連接 [1]。 客戶機程序的源代碼如下: Private Sub Command1_Click() 連接 按鈕 = = CLng() //填好 Socket 的對方地址及對方端口號 Socket //發(fā)送 連接 請求,當 連接 成功時出發(fā) Winsock 的 Connect 事件 End Sub Private Sub Command2_Click() 39。發(fā)送按鈕 If IsConnectionOpen = False Then MsgBox 未建立 連接 ! Else End If //發(fā)送數(shù)據(jù) End Sub Private Sub Form_Load() = sjn = 1111 //程序啟動時兩個文本框先顯示服務(wù)器的地址及端 口號 = False IsConnectionOpen = False //一開始未 連接 End Sub Private Sub Winsock1_Close() End 關(guān)閉 socket End Sub 21 Private Sub Winsock1_Connect() //連接 成功時觸發(fā) IsConnectionOpen = True = True //連接 成功了 End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim str As String str //收到數(shù)據(jù)時, Winsock1 把數(shù)據(jù)寫入緩存 str = + str + Chr(13) + Chr(10) = Len() //在文本框中顯示接收的數(shù)據(jù) End Sub 22 23 第四章 socket 在網(wǎng)絡(luò)通信中的應(yīng)用 實時數(shù)據(jù)網(wǎng)絡(luò)程序描述服務(wù)器程序設(shè)計 遙校準實驗室控制計算機的服務(wù)器程序是使用 編程語言,在WindowsXP 上開發(fā)的。采用模塊化設(shè)計的編程思想,使程序結(jié)構(gòu)非常清晰,易于調(diào)試和擴展。該程序有兩個功能,第一個功能是對網(wǎng)絡(luò)進行 偵聽。如果收到連接請求,則與請求連接的客戶機進行網(wǎng)絡(luò)連接。第二個功能是實時接收測量現(xiàn)場傳來的溫度數(shù)據(jù)、溫度計類型和溫度計編號,并將經(jīng)過校準的實驗數(shù)據(jù)通過網(wǎng)絡(luò)實時傳輸給測量現(xiàn)場。程序中應(yīng)用的控件有: Frame 控件數(shù)組、 Label 控件數(shù)組、TextBox控件數(shù)組、 CommandButton控件數(shù)組和 Winsock控件。通過設(shè)置 LocalPort屬性,作為偵聽端口。使用 Li
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1