亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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(忽略大小寫(xiě)),則程序退出
    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)文章

  • python實(shí)現(xiàn)漢諾塔遞歸算法經(jīng)典案例

    python實(shí)現(xiàn)漢諾塔遞歸算法經(jīng)典案例

    這篇文章主要大家分享了python實(shí)現(xiàn)漢諾塔遞歸算法經(jīng)典案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • python圖形繪制奧運(yùn)五環(huán)實(shí)例講解

    python圖形繪制奧運(yùn)五環(huán)實(shí)例講解

    在本文里我們給大家整理了一篇關(guān)于python圖形繪制奧運(yùn)五環(huán)的實(shí)例內(nèi)容,大家可以跟著學(xué)習(xí)下。
    2019-09-09
  • 對(duì)python append 與淺拷貝的實(shí)例講解

    對(duì)python append 與淺拷貝的實(shí)例講解

    今天小編就為大家分享一篇對(duì)python append 與淺拷貝的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • numpy庫(kù)reshape用法詳解

    numpy庫(kù)reshape用法詳解

    這篇文章主要介紹了numpy庫(kù)reshape用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python中單下劃線(_)和雙下劃線(__)的特殊用法

    python中單下劃線(_)和雙下劃線(__)的特殊用法

    這篇文章主要介紹了python中單下劃線(_)和雙下劃線(__)的特殊用法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python實(shí)現(xiàn)繪制M2貨幣供應(yīng)率曲線

    Python實(shí)現(xiàn)繪制M2貨幣供應(yīng)率曲線

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言實(shí)現(xiàn)繪制M2貨幣供應(yīng)率曲線,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • Python數(shù)據(jù)分析之Numpy庫(kù)的使用詳解

    Python數(shù)據(jù)分析之Numpy庫(kù)的使用詳解

    NumPy(Numerical Python)是Python的一種開(kāi)源的數(shù)值計(jì)算擴(kuò)展。這種工具可用來(lái)存儲(chǔ)和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多(該結(jié)構(gòu)也可以用來(lái)表示矩陣(matrix)),支持大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)
    2021-11-11
  • python字符串拼接和列表拼接方式

    python字符串拼接和列表拼接方式

    這篇文章主要介紹了python字符串拼接和列表拼接方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python Polars庫(kù)的使用簡(jiǎn)介

    python Polars庫(kù)的使用簡(jiǎn)介

    這篇文章主要介紹了python Polars庫(kù)的使用簡(jiǎn)介,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • python面試題之read、readline和readlines的區(qū)別詳解

    python面試題之read、readline和readlines的區(qū)別詳解

    當(dāng)python進(jìn)行文件的讀取會(huì)遇到三個(gè)不同的函數(shù),它們分別是read(),readline(),和readlines(),下面這篇文章主要給大家介紹了關(guān)于python面試題之read、readline和readlines區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-07-07

最新評(píng)論