国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

從零開始學Python第八周:詳解網(wǎng)絡(luò)編程基礎(chǔ)(socket)

2020-02-23 04:09:46
字體:
供稿:網(wǎng)友

一,Socket編程

(1)Socket方法介紹

Socket是網(wǎng)絡(luò)編程的一個抽象概念。通常我們用一個Socket表示“打開了一個網(wǎng)絡(luò)鏈接“,而打開一個Socket需要知道目標計算機的IP地址和端口號,再指定協(xié)議類型即可。 套接字是一個雙向的通信信道的端點。套接字可能在溝通過程,進程之間在同一臺機器上,或在不同的計算機之間的進程 要創(chuàng)建一個套接字,必須使用Socket模塊的socket.socket()方法

在socket模塊中的一般語法:

s = socket.socket(socket_family,socket_type,protocol=0)

(3)TCP介紹

大多數(shù)連接都是可靠的TCP連接。創(chuàng)建TCP連接時,主動發(fā)起連接的叫客戶端,被動響應(yīng)連接的叫服務(wù)器

例如在瀏覽器中訪問新浪時,我們自己的計算機就是客戶端,瀏覽器會主動向新浪的服務(wù)器發(fā)起連接。如果一切順利,新浪的服務(wù)器接受了我們的連接,一個TCP連接就建立起來了,后面的通信就是發(fā)送網(wǎng)頁內(nèi)容了

(4)TCP編程演示-客戶端

要創(chuàng)建一個基于TCP連接的Socket,代碼演示:

 import socket  s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('www.sina.com.cn',))

建立TCP連接后,就可以向服務(wù)器發(fā)送請求,要求返回首頁的內(nèi)容,發(fā)送的文本格式必須符合HTTP標準,然后接收服務(wù)器返回的數(shù)據(jù),最后關(guān)閉連接

(5)TCP編程演示-服務(wù)器

和客戶端編程相比,服務(wù)器編程就要復(fù)雜一些,服務(wù)器進程首先要綁定一個端口并監(jiān)聽來自其他客戶端的連接。如果某個客戶端連接過來了,服務(wù)器就與該客戶端建立Socket連接,隨后的通信就靠這個Socket連接了

編寫一個簡單的服務(wù)器程序,它接收客戶端連接,把客戶端發(fā)過來的字符串加上Hello再發(fā)回去,代碼演示:

 import socket  Host = 'locakhost'   #監(jiān)聽的IP地址 port =       #監(jiān)聽的端口 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  #建立套接字 s.bind(Host,port)    #綁定IP地址和端口 s.listen()       #開始監(jiān)聽 conn,addr = s.accept() #接受一個新連接 data = conn.recv() #接收客戶端字符串 conn.sendall(data+'Hello') #發(fā)送字符串給客戶端

需要注意的是:同一個端口,被一個Socket綁定了以后,就不能被別的Socket綁定了

(6)UDP介紹

TCP是建立可靠連接,并且通信雙方都可以以流的形式發(fā)送數(shù)據(jù)。相對TCP,UDP則是面向無連接的協(xié)議 使用UDP協(xié)議時,不需要建立連接,只需要知道對方的IP地址和端口號,就可以直接發(fā)數(shù)據(jù)包。但是,能不能到達并不清楚。 雖然用UDP傳輸數(shù)據(jù)不可靠,但它的優(yōu)點是和TCP比,速度快,對于不要求可靠到達的數(shù)據(jù),就可以使用UDP協(xié)議

(7)UDP編程演示

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 利川市| 巴彦淖尔市| 建始县| 林口县| 常山县| 云南省| 双峰县| 彝良县| 连平县| 福清市| 高淳县| 镇宁| 平舆县| 西和县| 通辽市| 利津县| 株洲县| 镇坪县| 乐安县| 白山市| 古浪县| 天长市| 霍城县| 广宁县| 疏勒县| 吉林市| 涟源市| 郴州市| 文山县| 韩城市| 平山县| 新干县| 金川县| 达州市| 屯门区| 金乡县| 深水埗区| 虎林市| 湖南省| 南阳市| 通江县|