最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python Socket使用實例

 更新時間:2017年12月18日 15:49:20   作者:garfieldtom  
這篇文章主要介紹了Python Socket使用實例,具有一定借鑒價值,需要的朋友可以參考下。

Python在網(wǎng)絡(luò)通訊方面功能強大,學(xué)習(xí)一下Socket通訊的基本方式

UDP通訊:

Server:

import socket
port=8081
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#從指定的端口,從任何發(fā)送者,接收UDP數(shù)據(jù)
s.bind(('',port))
print('正在等待接入...')
while True:
  #接收一個數(shù)據(jù)
  data,addr=s.recvfrom(1024)
  print('Received:',data,'from',addr)

Client:

import socket
port=8081
host='localhost'
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.sendto(b'hello,this is a test info !',(host,port))

很簡單 。下面是TCP方式:

Server:

#-*- coding: utf-8 -*-
from socket import *
from time import ctime

HOST=''
PORT=12345
BUFSIZ=1024
ADDR=(HOST, PORT)
sock=socket(AF_INET, SOCK_STREAM)

sock.bind(ADDR)

sock.listen(5)
while True:
  print('waiting for connection')
  tcpClientSock, addr=sock.accept()
  print('connect from ', addr)
  while True:
    try:
      data=tcpClientSock.recv(BUFSIZ)
    except:
      print(e)
      tcpClientSock.close()
      break
    if not data:
      break
    s='Hi,you send me :[%s] %s' %(ctime(), data.decode('utf8'))
    tcpClientSock.send(s.encode('utf8'))
    print([ctime()], ':', data.decode('utf8'))
tcpClientSock.close()
sock.close()

Client:

#-*- coding: utf-8 -*-
from socket import *

class TcpClient:
  HOST='127.0.0.1'
  PORT=12345
  BUFSIZ=1024
  ADDR=(HOST, PORT)
  def __init__(self):
    self.client=socket(AF_INET, SOCK_STREAM)
    self.client.connect(self.ADDR)

    while True:
      data=input('>')
      if not data:
        break
      self.client.send(data.encode('utf8'))
      data=self.client.recv(self.BUFSIZ)
      if not data:
        break
      print(data.decode('utf8'))
      
if __name__ == '__main__':
  client=TcpClient()

上面的TCP方式有個問題,不能退出,好吧,我們改造一下,使這個程序可以發(fā)送quit命令以退出:

Server:

#-*- coding: utf-8 -*-
from socket import *
from time import ctime
from time import localtime
import time

HOST=''
PORT=1122 #設(shè)置偵聽端口
BUFSIZ=1024
ADDR=(HOST, PORT)
sock=socket(AF_INET, SOCK_STREAM)

sock.bind(ADDR)

sock.listen(5)
#設(shè)置退出條件
STOP_CHAT=False
while not STOP_CHAT:
  print('等待接入,偵聽端口:%d' % (PORT))
  tcpClientSock, addr=sock.accept()
  print('接受連接,客戶端地址:',addr)
  while True:
    try:
      data=tcpClientSock.recv(BUFSIZ)
    except:
      #print(e)
      tcpClientSock.close()
      break
    if not data:
      break
    #python3使用bytes,所以要進行編碼
    #s='%s發(fā)送給我的信息是:[%s] %s' %(addr[0],ctime(), data.decode('utf8'))
    #對日期進行一下格式化
    ISOTIMEFORMAT='%Y-%m-%d %X'
    stime=time.strftime(ISOTIMEFORMAT, localtime())
    s='%s發(fā)送給我的信息是:%s' %(addr[0],data.decode('utf8'))
    tcpClientSock.send(s.encode('utf8'))
    print([stime], ':', data.decode('utf8'))
    #如果輸入quit(忽略大小寫),則程序退出
    STOP_CHAT=(data.decode('utf8').upper()=="QUIT")
    if STOP_CHAT:
      break
tcpClientSock.close()
sock.close()

Client:

#-*- coding: utf-8 -*-
from socket import *

class TcpClient:
  #測試,連接本機
  HOST='127.0.0.1'
  #設(shè)置偵聽端口
  PORT=1122 
  BUFSIZ=1024
  ADDR=(HOST, PORT)
  def __init__(self):
    self.client=socket(AF_INET, SOCK_STREAM)
    self.client.connect(self.ADDR)

    while True:
      data=input('>')
      if not data:
        break
      #python3傳遞的是bytes,所以要編碼
      self.client.send(data.encode('utf8'))
      print('發(fā)送信息到%s:%s' %(self.HOST,data))
      if data.upper()=="QUIT":
        break      
      data=self.client.recv(self.BUFSIZ)
      if not data:
        break
      print('從%s收到信息:%s' %(self.HOST,data.decode('utf8')))
      
      
if __name__ == '__main__':
  client=TcpClient()

注:以上代碼為Python3。

總結(jié)

以上就是本文關(guān)于Python Socket使用實例的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • Django ORM數(shù)據(jù)庫操作處理全面指南

    Django ORM數(shù)據(jù)庫操作處理全面指南

    本文深度探討Django ORM的概念、基礎(chǔ)使用、進階操作以及詳細解析在實際使用中如何處理數(shù)據(jù)庫操作,同時,我們還討論了模型深入理解,如何進行CRUD操作,并且深化理解到數(shù)據(jù)庫遷移等高級主題
    2023-09-09
  • Python 支付整合開發(fā)包的實現(xiàn)

    Python 支付整合開發(fā)包的實現(xiàn)

    這篇文章主要介紹了Python 支付整合開發(fā)包的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Python?pass函數(shù)使用及其應(yīng)用的詳解

    Python?pass函數(shù)使用及其應(yīng)用的詳解

    Python中,pass是一種空語句,即不做任何事情,只起到占位符的作用,本文主要介紹了Python?pass函數(shù)使用及其應(yīng)用的詳解,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python使用ctypes調(diào)用擴展模塊的實例方法

    python使用ctypes調(diào)用擴展模塊的實例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python使用ctypes調(diào)用擴展模塊的實例方法內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。
    2020-01-01
  • python讀寫配置文件操作示例

    python讀寫配置文件操作示例

    這篇文章主要介紹了python讀寫配置文件操作,結(jié)合實例形式分析了Python針對ini配置文件的讀取、解析、寫入等相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • Pycharm不同版本鏡像源添加方法

    Pycharm不同版本鏡像源添加方法

    本文主要介紹了Pycharm不同版本鏡像源添加方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python Flask異步發(fā)送郵件實現(xiàn)方法解析

    Python Flask異步發(fā)送郵件實現(xiàn)方法解析

    這篇文章主要介紹了Python Flask異步發(fā)送郵件實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Python BautifulSoup 節(jié)點信息

    Python BautifulSoup 節(jié)點信息

    這篇文章主要介紹了Python BautifulSoup 節(jié)點信息,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Python實現(xiàn)自動裝機功能案例分析

    Python實現(xiàn)自動裝機功能案例分析

    這篇文章主要介紹了Python實現(xiàn)自動裝機功能,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 用uWSGI和Nginx部署Flask項目的方法示例

    用uWSGI和Nginx部署Flask項目的方法示例

    這篇文章主要介紹了用uWSGI和Nginx部署Flask項目的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05

最新評論

昌吉市| 土默特右旗| 饶平县| 福清市| 谢通门县| 婺源县| 遵义市| 论坛| 呼伦贝尔市| 桐柏县| 台山市| 布拖县| 绩溪县| 辽宁省| 肥乡县| 新竹市| 锦屏县| 武隆县| 双峰县| 长春市| 平塘县| 东海县| 新津县| 镇赉县| 延长县| 宣汉县| 安庆市| 万山特区| 福安市| 杂多县| 逊克县| 长宁县| 娱乐| 抚州市| 天祝| 绥化市| 新干县| 斗六市| 锦州市| 永泰县| 灌南县|