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

Python Socket使用實(shí)例

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

Python在網(wǎng)絡(luò)通訊方面功能強(qiáng)大,學(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:
  #接收一個(gè)數(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))

很簡(jiǎn)單 。下面是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方式有個(gè)問(wèn)題,不能退出,好吧,我們改造一下,使這個(gè)程序可以發(fā)送quit命令以退出:

Server:

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

HOST=''
PORT=1122 #設(shè)置偵聽(tīng)端口
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('等待接入,偵聽(tīng)端口:%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,所以要進(jìn)行編碼
    #s='%s發(fā)送給我的信息是:[%s] %s' %(addr[0],ctime(), data.decode('utf8'))
    #對(duì)日期進(jìn)行一下格式化
    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:
  #測(cè)試,連接本機(jī)
  HOST='127.0.0.1'
  #設(shè)置偵聽(tīng)端口
  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使用實(shí)例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題。如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

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

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

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

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

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

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

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

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

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

    python讀寫配置文件操作示例

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

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

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

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

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

    Python BautifulSoup 節(jié)點(diǎn)信息

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

    Python實(shí)現(xiàn)自動(dòng)裝機(jī)功能案例分析

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

    用uWSGI和Nginx部署Flask項(xiàng)目的方法示例

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

最新評(píng)論

齐河县| 望江县| 潞西市| 东台市| 温州市| 磴口县| 齐齐哈尔市| 安庆市| 武定县| 信宜市| 宁波市| 榕江县| 共和县| 舒兰市| 上思县| 池州市| 东源县| 卓资县| 潼关县| 灵璧县| 嘉祥县| 永仁县| 遂宁市| 贡山| 平遥县| 天台县| 镇原县| 洛浦县| 峨山| 夏河县| 酉阳| 玉田县| 西和县| 吉首市| 瑞金市| 平武县| 淮南市| 资兴市| 安陆市| 铁力市| 海口市|