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

首頁 > 編程 > Python > 正文

Python網絡編程詳解

2020-01-04 16:25:48
字體:
來源:轉載
供稿:網友

1、服務器就是一系列硬件或軟件,為一個或多個客戶端(服務的用戶)提供所需的“服務”。它存在唯一目的就是等待客戶端的請求,并響應它們(提供服務),然后等待更多請求。

2、客戶端/服務器架構既可以應用于計算機硬件,也可以應用于計算機軟件。

3、在服務器響應客戶端之前,首先會創建一個通信節點,它能夠使服務器監聽請求。

一、套接字:通信端點

1、套接字

  套接字是計算機網絡數據結構,它體現了上節中所描述的“通信端點”的概念。在任何類型的通信開始之前,網絡應用程序必須創建套接字。

  有兩種類型的套接字:基于文件和面向網絡的。

2、套接字地址:主機-端口對

  如果一個套接字像一個電話插孔-允許通信的一些基礎設施,那么主機名和端口號就像區號和電話號碼的組合。有效的端口號范圍為0-65535(小于1024的端口號預留給了系統)

3、面向連接的套接字和與無連接的套接字

  面向連接,在進行通信之前必須建立一個連接。實現這種連接類型主要協議是TCP(傳輸控制協議)

  無連接,在通信之前并不需要建立連接。主要協議是UDP(用戶數據報協議)

二、Python中的網絡編程

1、socket()模塊函數

為創建TCP/IP套接字:tcpSock = socket.socket(socket.AF_INEF,socket.SOCK_STREAM)

創建UDP/IP套接字:udpSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

2.常見的套接字對象方法和屬性

 

名稱 描述
服務器套接字方法  
s.bind()  將地址(主機名、端口號對)綁定到套接字上
s.listen() 設置并啟動TCP監聽器
s.accept() 被動接受TCP客戶端連接,一直等待直到連接到達(阻塞)
客戶端套接字方法  
s.connect() 主動發起TCP服務器連接
s.connect_ex() connect的擴展版本,此時會以錯誤代碼的形式返回問題,而不是拋出一個異常
普通的套接字方法  
s.recv() 接受TCP消息
s.send() 發送TCP消息
s.sendall() 完整的發送TCP消息
s.recvfrom() 接收UDP消息
s.shutdown() 關閉連接
s.close() 關閉套接字

 

3、創建TCP服務器

ss = socket()  #創建服務器套接字ss.bind()      #套接字與地址綁定ss.listen()      #監聽連接inf_loop:       #服務器無限循環  cs = ss.accept()     #接收客戶端連接  comm_loop:        #通信循環    cs.recv()/cs.send()  #對話(接收、發送)  cs.close()       #關閉客戶端套接字ss.close()        #關閉服務器套接字(可選)
#!/usr/bin/env python/103913.html">python#TCP時間戳服務器from socket import *from time import ctimeHOST = ''PORT = 21567BUFSIZ = 1024ADDR = (HOST,PORT)tcpSerSock = socket(AF_INET,SOCK_STREAM)tcpSerSock.bind(ADDR)tcpSerSock.listen(5)while True:  print('waiting for connecting...')  tcpClisock, addr = tcpSerSock.accept()  print('...connected from:',addr)  while True:    data = tcpClisock.recv(BUFSIZ)    if not data:      break    tcpClisock.send('[%s] %s' % (bytes(ctime(),'utf-8'),data))  tcpClisock.close()tcpSerSock.close()

4、創建TCP客戶端

cs = socket()cs.connect()comm_loop:  cs.send()/cs.recv()cs.close()
#!/usr/bin/env python#TCP時間戳客戶端from socket import *HOST = '127.0.0.1'PORT = 21567BUFSIZ = 1024ADDR = (HOST,PORT)tcpClisock = socket(AF_INET,SOCK_STREAM)tcpClisock.connect(ADDR)while True:  data = input('> ')  if not data:    break  tcpClisock.send(data)  data = tcpClisock.recv(BUFSIZ)  if not data:    break  print(data.decode('utf-8'))tcpClisock.close()

5、創建UDP服務器

ss = socket()ss.bind()inf_loop:  cs = ss.recvfrom()/ss.sendto()ss.close()
#!/usr/bin/env python#UDP時間戳服務器from socket import *from time import ctimeHOST = ''PORT = 21567BUFSIZ = 1024ADDR = (HOST,PORT)udpSerSock = socket(AF_INET,SOCK_DGRAM)udpSerSock.bind(ADDR)while True:  print('waiting for message...')  data, addr=udpSerSock.recvfrom(BUFSIZ)  udpSerSock.sendto('[%s] %s' % (ctime(),data),addr)  print('...received from and returned to:',addr)udpSerSock.close()

6、創建UDP客戶端

cs = socket()comm_loop:  cs.send()/cs.recvfrom()cs.close()
#!/usr/bin/env python#UDP時間戳客戶端from socket import *HOST = 'localhost'PORT = 21567BUFSIZ = 1024ADDR = (HOST,PORT)udpClisock = socket(AF_INET,SOCK_DGRAM)while True:  data = input('> ')  if not data:    break  udpClisock.sendto(data,ADDR)  data, ADDR=udpClisock.recvfrom(BUFSIZ)  if not data:    break  print(data)udpClisock.close()

以上就是本文關于Python網絡編程詳解的全部內容,希望對大家有所幫助。有什么問題可以隨時留言,有問題我就改。。。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 威信县| 和政县| 通辽市| 阿巴嘎旗| 衡南县| 华阴市| 澎湖县| 马鞍山市| 象州县| 喜德县| 衡东县| 虹口区| 德清县| 通道| 龙陵县| 黄平县| 武冈市| 彩票| 莱阳市| 绍兴市| 西林县| 汾阳市| 桂平市| 平山县| 额济纳旗| 广宁县| 巩留县| 利辛县| 咸丰县| 宁南县| 隆子县| 昌宁县| 安义县| 九台市| 河津市| 民丰县| 新乡县| 托克托县| 南江县| 清水河县| 鹿邑县|