欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Socket使用實例

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

Python在網(wǎng)絡(luò)通訊方面功能強大,學習一下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)文章

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

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

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

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

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

    對python append 與淺拷貝的實例講解

    今天小編就為大家分享一篇對python append 與淺拷貝的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • numpy庫reshape用法詳解

    numpy庫reshape用法詳解

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

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

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

    Python實現(xiàn)繪制M2貨幣供應率曲線

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

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

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

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

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

    python Polars庫的使用簡介

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

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

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

最新評論