python-socket-網(wǎng)絡(luò)編程實(shí)驗(yàn)報(bào)告_第1頁
python-socket-網(wǎng)絡(luò)編程實(shí)驗(yàn)報(bào)告_第2頁
python-socket-網(wǎng)絡(luò)編程實(shí)驗(yàn)報(bào)告_第3頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、網(wǎng)絡(luò)編程實(shí)驗(yàn)報(bào)告python_socket 網(wǎng)絡(luò)編程一、TCP 編程一、建立一個(gè) TCP 服務(wù)器連接需要 6 個(gè)步驟:socketsocketsocket=socket.socket(familly,type)family AF_UNIX(Unix 域,用于同一臺(tái)機(jī)器上的進(jìn)程間通訊)以是AF_INEIPV4 協(xié)議的TCP 和 UDPtype SOCK_DGRAMraw socket綁定指派到指定地址上,socket.bind(address)address 必須是一個(gè)雙元素元組,(host,port),主機(jī)名或者 ip 地址+端口號。如果端口號正在被使用或者保留,或者主機(jī)名或ip 地址錯(cuò)誤,則

2、引發(fā)socke.error 異常。綁定后,必須準(zhǔn)備好套接字,以便接受連接請求。socket.listen(backlog)backlog 1如果隊(duì)列已滿,則拒絕請求。socketacceptconnection,address=socket.accept()調(diào)用 accept 方法時(shí),socket 會(huì)進(jìn)入waiting或阻塞狀態(tài)??蛻粽埱筮B接時(shí), 方法建立連接并返回服務(wù)器。 accept 方法返回一個(gè)含有倆個(gè)元素的元組,形如(connection,address)。第一個(gè)元素connection是新的socket 對象,服務(wù)器通過它與客戶通信;第二個(gè)元素address是客戶的 internet

3、 地址。sendrecv服務(wù)器調(diào)用send,并采用字符串形式向客戶發(fā)送信息。send 方法返回已發(fā)送的字符個(gè)數(shù)。服務(wù)器使用recv 方法從客戶接受信息。調(diào)用recv 時(shí),必須指定一個(gè)整數(shù)來控制本次調(diào)用所接受的最大數(shù)據(jù)量。recv 方法在接受數(shù)據(jù)時(shí)會(huì)進(jìn)入blocket狀態(tài),最后返回一個(gè)字符串,用它來表示收到的數(shù)據(jù)。如果發(fā)送的量超過recv所允許,數(shù)據(jù)會(huì)被截?cái)?。多余的?shù)據(jù)將緩沖于接受端。以后調(diào)recv時(shí)多余的數(shù)據(jù)會(huì)從緩沖區(qū)刪除。socketclose 方法以關(guān)閉連接。二、建立一個(gè) TCP 客戶端連接則需要 4 個(gè)步驟:socket 以連接服務(wù)器 socket=socket.socket(famil

4、y,type)socketconnect方法連接服務(wù)器 socket.connect(host,port)sendrecv方法通信。socketclose 方法來關(guān)閉連接。二,建立 TCP 連接首先建立服務(wù)器程序。創(chuàng)建套接字,綁定套接字,開始監(jiān)聽,就是一個(gè)while 循環(huán)一直監(jiān)聽有沒有消息連接。客戶端程序創(chuàng)建套接字,連接,等待輸入,發(fā)送。同一臺(tái)電腦結(jié)果在兩個(gè)shell 中演示。局域網(wǎng)內(nèi)交互測試信息:作為服務(wù)器,來自IP 地址為:192.168.1.101 客戶端的消息。三,建立 UDP 連接UDP 的建立過程基本和TCP 一樣,看以下代碼異同,這里不在熬述。建立服務(wù)器程序創(chuàng)建套接字,開始監(jiān)聽,

5、就是一個(gè) while 循環(huán)一直監(jiān)聽有沒有消息連接。建立客戶端程序創(chuàng)建套接字,while 循環(huán)一直監(jiān)聽有沒有消息連接。兩個(gè) shell 中演示顯示數(shù)據(jù)傳送局域網(wǎng)內(nèi)的信息交互:作為服務(wù)器,來自IP 地址為 192.168.1.101 的消息。作為客戶端,向IP 地址為 192.168.1.101 的服務(wù)器發(fā)送消息??偨Y(jié):一般的 TCP 和 UDP 連接服務(wù)器和客戶端的內(nèi)容和步驟。TCP 服務(wù)器端:。方數(shù)據(jù)。就是accept一個(gè)連接,然后recv數(shù)據(jù)。這個(gè)過程的偽代碼如下:ss=socket()#創(chuàng)建服務(wù)器套接字 ss.bind()#把本地地址綁到套接字ss.listen()#監(jiān)聽連接inf_loo

6、p:#服務(wù)器無限循環(huán)cs=ss.accept()接受客戶端的連comm._loop:通信循環(huán)cs.recv()/cs.send()#對話cs.close()#關(guān)閉客戶套接字ss.close()#關(guān)閉服務(wù)器套接字TCP 客戶端: ,connect。dataRecvBUFF偽代碼如下:cs=socket()#創(chuàng)建客戶套接字cs.connect()#嘗試連接服務(wù)器comm._loop:通信循環(huán)cs.send()/cs.recv()#對話cs.close()#關(guān)閉套接UDP 服務(wù)器端:socket,bing直接接收數(shù)據(jù)從sender sendtodata,addr關(guān)閉套接字 close偽代碼:Ss=s

7、ocket()創(chuàng)建套接ss.bind()#綁定inf_loop:#無限循環(huán)ss.recvfrom()/sendto()#對ss.close()#關(guān)閉套接字UDP 客戶端:創(chuàng)建套接字,socketsendto ,recvfrom關(guān)閉套接字 close偽代碼:Cs=socket()創(chuàng)建Comm_loop:#循環(huán)接收發(fā)Cs.sendto()/recvfrom() 對話Cs.close()關(guān)閉Send sendto recvrecvfrom我們發(fā)現(xiàn)在TCP 連接中我們發(fā)生接收數(shù)據(jù)都是用的send和 recv方法,而在 UDP中用的sendto和recvfrom和recvbufferTCP 也就是說我們知道給誰發(fā),或者收誰的數(shù)據(jù)。而在 UDP buffersendtodata,addrrecvfrom sender addr,然后發(fā)送時(shí), 根據(jù) addr 發(fā)送。因?yàn)閁DP 不是面向連接的,所以我們必須知道這個(gè)數(shù)據(jù)要發(fā)給誰,它的地址什么。四,UDP 廣播1,工作原理UDP 廣播提供了傳輸不區(qū)分種類的消息的便捷方式。在多數(shù)情況下UDP 255.255.255.255該地址用于主機(jī)配置過程中 IP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論