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

python使用socket創(chuàng)建tcp服務(wù)器和客戶端

 更新時間:2018年04月12日 14:23:22   作者:欒鵬  
這篇文章主要為大家詳細(xì)介紹了python使用socket創(chuàng)建tcp服務(wù)器和客戶端,具有一定的參考價值,感興趣的小伙伴們可以參考一下

python使用socket創(chuàng)建tcp服務(wù)器和客戶端。

服務(wù)器端為一個時間戳服務(wù)器,在接收到客戶端發(fā)來的數(shù)據(jù)后,自動回復(fù)。

客戶端,等待用戶輸入,回車后向服務(wù)器發(fā)送用戶輸入的內(nèi)容。

分別在python2.7和python3.6下測試。在啟動時需要先啟動服務(wù)器端,在啟動客戶端。

python2.7下

服務(wù)器端代碼為

#coding:utf-8

from socket import *
from time import ctime

print("=====================時間戳TCP服務(wù)器=====================");

HOST = '' #主機號為空白表示可以使用任何可用的地址。
PORT = 21567 #端口號
BUFSIZ = 1024 #接收數(shù)據(jù)緩沖大小
ADDR = (HOST, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM) #創(chuàng)建TCP服務(wù)器套接字
tcpSerSock.bind(ADDR) #套接字與地址綁定
tcpSerSock.listen(5) #監(jiān)聽連接,同時連接請求的最大數(shù)目

while True:
  print('等待客戶端的連接...')
  tcpCliSock, addr = tcpSerSock.accept()  #接收客戶端連接請求
  print('取得連接:', addr)

  while True:
    data = tcpCliSock.recv(BUFSIZ) #連續(xù)接收指定字節(jié)的數(shù)據(jù),接收到的是字節(jié)數(shù)組
    if not data: #如果數(shù)據(jù)空白,則表示客戶端退出,所以退出接收
      break
    tcpCliSock.send('[%s] %s' % (ctime(), data)) #向客戶端發(fā)送時間戳數(shù)據(jù)

  tcpCliSock.close() #關(guān)閉與客戶端的連接
tcpSerSock.close() #關(guān)閉服務(wù)器socket

客戶端代碼為

#coding:utf-8

from socket import *

print("=====================TCP客戶端=====================");

HOST = '127.0.0.1' #服務(wù)器ip地址,等價于localhost
PORT = 21567 #通信端口號
BUFSIZ = 1024 #接收數(shù)據(jù)緩沖大小
ADDR = (HOST, PORT)

tcpCliSock = socket(AF_INET, SOCK_STREAM) #創(chuàng)建客戶端套接字
tcpCliSock.connect(ADDR) #發(fā)起TCP連接

while True:
  data = raw_input('> ')  #接收用戶輸入
  if not data: #如果用戶輸入為空,直接回車就會發(fā)送"",""就是代表false
    break
  tcpCliSock.send(data)  #客戶端發(fā)送消息
  data = tcpCliSock.recv(BUFSIZ)  #接收回應(yīng)消息,接收到的是字節(jié)數(shù)組
  if not data:  #如果接收服務(wù)器信息失敗,或沒有消息回應(yīng)
    break
  print(data) #打印回應(yīng)消息

tcpCliSock.close() #關(guān)閉客戶端socket

python3.6下

服務(wù)器端代碼為

#coding:utf-8

from socket import *
from time import ctime

print("=====================時間戳TCP服務(wù)器=====================");

HOST = '127.0.0.1' #主機號為空白表示可以使用任何可用的地址。
PORT = 21567 #端口號
BUFSIZ = 1024 #接收數(shù)據(jù)緩沖大小
ADDR = (HOST, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM) #創(chuàng)建TCP服務(wù)器套接字
tcpSerSock.bind(ADDR) #套接字與地址綁定
tcpSerSock.listen(5) #監(jiān)聽連接,同時連接請求的最大數(shù)目

while True:
  print('等待客戶端的連接...')
  tcpCliSock, addr = tcpSerSock.accept()  #接收客戶端連接請求
  print('取得連接:', addr)

  while True:
    data = tcpCliSock.recv(BUFSIZ) #連續(xù)接收指定字節(jié)的數(shù)據(jù),接收到的是字節(jié)數(shù)組
    if not data: #如果數(shù)據(jù)空白,則表示客戶端退出,所以退出接收
      break
    #tcpCliSock.send('[%s] %s' % (bytes(ctime(), 'utf-8'), data))
    tcpCliSock.send(bytes('[%s] %s' % (ctime(), data.decode('utf-8')), 'utf-8')) #向客戶端發(fā)送時間戳數(shù)據(jù),必須發(fā)送字節(jié)數(shù)組

  tcpCliSock.close() #關(guān)閉與客戶端的連接
tcpSerSock.close() #關(guān)閉服務(wù)器socket

客戶端代碼為

#coding:utf-8

from socket import *

print("=====================TCP客戶端=====================");

HOST = '127.0.0.1' #服務(wù)器ip地址,等價于localhost
PORT = 21567 #通信端口號
BUFSIZ = 1024 #接收數(shù)據(jù)緩沖大小
ADDR = (HOST, PORT)

tcpCliSock = socket(AF_INET, SOCK_STREAM) #創(chuàng)建客戶端套接字
tcpCliSock.connect(ADDR) #發(fā)起TCP連接

while True:
  data = input('> ')  #接收用戶輸入
  if not data: #如果用戶輸入為空,直接回車就會發(fā)送"",""就是代表false
    break
  tcpCliSock.send(bytes(data, 'utf-8'))  #客戶端發(fā)送消息,必須發(fā)送字節(jié)數(shù)組
  data = tcpCliSock.recv(BUFSIZ)  #接收回應(yīng)消息,接收到的是字節(jié)數(shù)組
  if not data:  #如果接收服務(wù)器信息失敗,或沒有消息回應(yīng)
    break
  print(data.decode('utf-8')) #打印回應(yīng)消息,或者str(data,"utf-8")

tcpCliSock.close() #關(guān)閉客戶端socket

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解python的super()的作用和原理

    詳解python的super()的作用和原理

    這篇文章主要介紹了python的super()的作用和原理,super(), 在類的繼承里面super()非常常用, 它解決了子類調(diào)用父類方法的一些問題, 父類多次被調(diào)用時只執(zhí)行一次, 優(yōu)化了執(zhí)行邏輯,下面我們就來詳細(xì)看一下
    2020-10-10
  • Pytorch中Tensor與各種圖像格式的相互轉(zhuǎn)化詳解

    Pytorch中Tensor與各種圖像格式的相互轉(zhuǎn)化詳解

    這篇文章主要介紹了Pytorch中Tensor與各種圖像格式的相互轉(zhuǎn)化詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • python實現(xiàn)字符串和數(shù)字拼接

    python實現(xiàn)字符串和數(shù)字拼接

    今天小編就為大家分享一篇python實現(xiàn)字符串和數(shù)字拼接,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python中Yield的基本用法及Yield與return的區(qū)別解析

    Python中Yield的基本用法及Yield與return的區(qū)別解析

    Python中有一個非常有用的語法叫做生成器,用到的關(guān)鍵字就是yield,這篇文章主要介紹了Python中Yield的基本用法及Yield與return的區(qū)別,需要的朋友可以參考下
    2022-10-10
  • Python獲取瀏覽器Cookies的方法總結(jié)

    Python獲取瀏覽器Cookies的方法總結(jié)

    在現(xiàn)代網(wǎng)絡(luò)應(yīng)用和開發(fā)中,使用Cookies是一種常見的方式,它們用于存儲用戶信息、會話狀態(tài)等,本文為大家整理了多種Python獲取瀏覽器Cookies的方法,希望對大家有所幫助
    2023-12-12
  • Python如何發(fā)送與接收大型數(shù)組

    Python如何發(fā)送與接收大型數(shù)組

    這篇文章主要介紹了Python如何發(fā)送與接收大型數(shù)組,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • 如何解決pycharm調(diào)試報錯的問題

    如何解決pycharm調(diào)試報錯的問題

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于如何解決pycharm調(diào)試報錯的問題文章,需要的朋友們可以學(xué)習(xí)參考下。
    2020-08-08
  • 教你如何使用Python快速爬取需要的數(shù)據(jù)

    教你如何使用Python快速爬取需要的數(shù)據(jù)

    學(xué)點數(shù)據(jù)爬蟲基礎(chǔ)能讓繁瑣的數(shù)據(jù)CV工作(Ctrl+C,Ctrl+V)成為自動化就足夠了.作為一名數(shù)據(jù)分析師而并非開發(fā)工程師,需要掌握的爬蟲必備的知識內(nèi)容,能獲取需要的數(shù)據(jù)即可 ,需要的朋友可以參考下
    2021-06-06
  • Python eval函數(shù)原理及用法解析

    Python eval函數(shù)原理及用法解析

    這篇文章主要介紹了Python eval函數(shù)原理及用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Keras - GPU ID 和顯存占用設(shè)定步驟

    Keras - GPU ID 和顯存占用設(shè)定步驟

    這篇文章主要介紹了Keras - GPU ID 和顯存占用設(shè)定步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論