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

首頁 > 編程 > Python > 正文

python 網絡編程詳解及簡單實例

2020-02-23 04:36:59
字體:
來源:轉載
供稿:網友

python 網絡編程詳解

網絡編程的專利權應該屬于Unix,各個平臺(如windows、Linux等)、各門語言(C、C++、Python、Java等)所實現的符合自身特性的語法都大同小異。在我看來,懂得了Unix的socket網絡編程,其他的形式的網絡編程方法也就知道了。這句話說得還不太嚴謹。準確的應該說成懂得了socket編程的原理,網絡編程也就知道了,不同之處就在于每個平臺,每個語言都有自己專享的語法,我們直接靈活套用就行了。

下面是用python實現的最基本的網絡編程的例子,即依托于客戶端-服務器的架構,實現客戶端與服務器之間的單向“數據流通”。我們分別用兩個方法來實現,一個方法是最原始的socket編程,另一個方法是利用python的面向對象對第一種方法進行封裝實現,目的是減少實現透明性,便于快速開發。

要求:客戶端輸入數據,發送到服務端,服務器端生成(時間戳+數據)的封裝數據回應客戶端。由于socket編程包括兩種:面向連接的和無連接的,這兩種分別對應TCP數據流和UDP數據報文。所以,我們兩種方法都進行實現。

一、Python socket編程

面向連接的TCP socket編程:

# -*- coding: utf-8 -*- 3 from socket import *from time import ctime # Address and PortHOST = ''PORT = 21567ADDR = (HOST, PORT)# BuffSizeBUFSIZ = 1024# build sockettcpSerSock = socket(AF_INET, SOCK_STREAM)# bind sockettcpSerSock.bind(ADDR)# listen 5 client tcpSerSock.listen(5)try:  while True:    print 'waiting for connection...'    # build client socket    tcpCliSock, addr = tcpSerSock.accept()    print '...connect from:', addr    # accept data and process    while True:      data = tcpCliSock.recv(BUFSIZ)      if not data:        break      tcpCliSock.send('[%s] %s' % (ctime(), data))      # close client socket       tcpCliSock.close()except EOFError, KeyboardInterrupt:  tcpSerSock.close()
# -*- coding:utf-8 -*-from socket import *# Address and Port HOST = '127.0.0.1'PORT = 21567ADDR = (HOST, PORT)# BufferSizeBUFSIZ = 1024#build socket tcpCliSocket = socket(AF_INET, SOCK_STREAM)tcpCliSocket.connect(ADDR)while True:  data = raw_input('> ')  if not data:    break  # send data  tcpCliSocket.send(data)  # recv data  data = tcpCliSocket.recv(BUFSIZ)  if not data:    break  # show data  print datatcpCliSocket.close()

無連接的UDP socket編程

# -*- coding: utf-8 -*-from socket import *from time import ctime # Address and Port HOST = ''PORT = 8000ADDR = (HOST, PORT)# BufferSizeBUFFSIZE = 1024# build socketudpSerSock = socket(AF_INET, SOCK_DGRAM)# bind socketudpSerSock.bind(ADDR)try:  while True:    print 'waiting the message...'    data, addr = udpSerSock.recvfrom(BUFFSIZE)    print 'received the message: '+data+' from: ', addr    udpSerSock.sendto('[%s] %s' % (ctime(), data), addr)except EOFError, KeyboardInterrupt:  udpSerSock.close()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武夷山市| 黑龙江省| 锡林浩特市| 津市市| 盖州市| 乌兰察布市| 准格尔旗| 镇江市| 韶山市| 寿阳县| 台东市| 望谟县| 二连浩特市| 延安市| 任丘市| 濉溪县| 阿尔山市| 肥东县| 浮梁县| 土默特左旗| 阜新| 许昌市| 枣强县| 得荣县| 松阳县| 建宁县| 竹北市| 辉县市| 神木县| 安阳县| 沈丘县| 张家口市| 庆云县| 绥化市| 晋州市| 左权县| 柯坪县| 华宁县| 壤塘县| 芮城县| 天台县|