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

Python實(shí)現(xiàn)TCP通信的示例代碼

 更新時(shí)間:2019年09月09日 09:42:50   作者:蓬 蒿 人  
這篇文章主要介紹了Python實(shí)現(xiàn)TCP通信的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

使用socket實(shí)現(xiàn)tcp通信,需導(dǎo)入socket模塊

1、服務(wù)端

主要步驟:

(1)創(chuàng)建socket:socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)

family:AF_INET , AF_INET6, AF_UNIX, AF_CAN, AF_PACKET,  AF_RDS

type:SOCK_STREAM , SOCK_DGRAM, SOCK_RAW,或者其他SOCK_*

proto:一般使用默認(rèn)值0

fileno:一般使用默認(rèn)值

(2)綁定IP和端口號:socket.bind(address)

address:使用(host,port)元組即可

(3)監(jiān)聽:socket.listen([backlog])

backlog:就理解為最大連接數(shù)

(4)接受連接:socket.accept()

返回(conn,address)元組,分別是已連接客戶端的socket對象和地址

(5)發(fā)送/接受數(shù)據(jù):socket.recv(bufsize[, flags])/socket.send(bytes[, flags])

bufsize:接收的數(shù)據(jù)最大字節(jié)數(shù)

bytes:需要發(fā)送的數(shù)據(jù)字節(jié)數(shù)

(6)關(guān)閉連接:socket.close()

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:tcpserver.py
 
import socket
import time
MaxBytes=1024*1024
 
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.settimeout(60)
host = '127.0.0.1'
#host = socket.gethostname()
port = 11223
server.bind((host, port))    # 綁定端口
 
server.listen(1)           # 監(jiān)聽
try:
  client,addr = server.accept()     # 等待客戶端連接
  print(addr," 連接上了")
  while True:
    data = client.recv(MaxBytes)
    if not data:
      print('數(shù)據(jù)為空,我要退出了')
      break
    localTime = time.asctime( time.localtime(time.time()))
    print(localTime,' 接收到數(shù)據(jù)字節(jié)數(shù):',len(data))
    print(data.decode())
    client.send(data)
except BaseException as e:
  print("出現(xiàn)異常:")
  print(repr(e))
finally:
  server.close()          # 關(guān)閉連接
  print("我已經(jīng)退出了,后會無期")

這個(gè)實(shí)例沒有創(chuàng)建其他線程,也只接收一個(gè)客戶端的連接;為了能手動結(jié)束或自動結(jié)束accept和recv的阻塞,設(shè)置了超時(shí)60秒,并將主體部分放入到try語句中;將socket的關(guān)閉放到finally塊中,可以防止程序異常退出,而導(dǎo)致沒有調(diào)用close函數(shù)。

2、客戶端

主要步驟:

(1)創(chuàng)建socket:socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)

(2)連接:socket.connect(address)

address:使用(host,port)元組即可

(3)發(fā)送/接受數(shù)據(jù):socket.recv(bufsize[, flags])/socket.send(bytes[, flags])

(4)關(guān)閉連接:socket.close() 

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:tcpclient.py
 
import socket
import time
MaxBytes=1024*1024
host ='127.0.0.1'
port = 11223
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.settimeout(30)
client.connect((host,port))
while True:
  inputData=input();     #等待輸入數(shù)據(jù)
  if(inputData=="quit"):
    print("我要退出了,再見")
    break
  sendBytes = client.send(inputData.encode())
  if sendBytes<=0:
    break;
  recvData = client.recv(MaxBytes)
  if not recvData:
    print('接收數(shù)據(jù)為空,我要退出了')
    break
  localTime = time.asctime( time.localtime(time.time()))
  print(localTime, ' 接收到數(shù)據(jù)字節(jié)數(shù):',len(recvData))
  print(recvData.decode())
client.close()
print("我已經(jīng)退出了,后會無期")

以上客戶端連接成功后等待用戶輸入,然后將輸入信息發(fā)送到服務(wù)端,服務(wù)端將數(shù)據(jù)原樣返回給客戶端,如果客戶端輸入quit就會跳出循環(huán)并關(guān)閉socket,這時(shí)服務(wù)端recv會返回空從而跳出循環(huán)并關(guān)閉socket。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python驗(yàn)證碼識別教程之利用投影法、連通域法分割圖片

    python驗(yàn)證碼識別教程之利用投影法、連通域法分割圖片

    這篇文章主要給大家介紹了關(guān)于python驗(yàn)證碼識別教程之利用投影法、連通域法分割圖片的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起看看吧
    2018-06-06
  • python3.7+anaconda 安裝opencv和dlib的問題及解決方法

    python3.7+anaconda 安裝opencv和dlib的問題及解決方法

    這篇文章主要介紹了python3.7+anaconda 安裝opencv和dlib的問題及解決方法,本文圖文并茂給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 解決python中的print函數(shù)自動換行的問題

    解決python中的print函數(shù)自動換行的問題

    這篇文章主要介紹了解決python中的print函數(shù)自動換行的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 利用Python如何實(shí)時(shí)檢測自身內(nèi)存占用

    利用Python如何實(shí)時(shí)檢測自身內(nèi)存占用

    這篇文章主要介紹了利用Python如何實(shí)時(shí)檢測自身內(nèi)存占用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • python實(shí)現(xiàn)rsa加密實(shí)例詳解

    python實(shí)現(xiàn)rsa加密實(shí)例詳解

    這篇文章主要介紹了python實(shí)現(xiàn)rsa加密實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Python基礎(chǔ)教程之異常處理詳解

    Python基礎(chǔ)教程之異常處理詳解

    Python的異常處理能力是很強(qiáng)大的,它有很多內(nèi)置異常,可向用戶準(zhǔn)確反饋出錯信息,下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之異常處理的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • 如何利用Pytorch計(jì)算三角函數(shù)

    如何利用Pytorch計(jì)算三角函數(shù)

    這篇文章主要介紹了如何利用Pytorch計(jì)算三角函數(shù),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Python中常見的反爬機(jī)制及其破解方法總結(jié)

    Python中常見的反爬機(jī)制及其破解方法總結(jié)

    今天給大家?guī)淼奈恼率顷P(guān)于Python的相關(guān)知識,文章圍繞著Python中常見的反爬機(jī)制及其破解方法展開,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • Python程序打包成exe的保姆教程

    Python程序打包成exe的保姆教程

    本文主要介紹了使用PyInstaller將Python程序打包成可執(zhí)行文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • python如何使用代碼運(yùn)行助手

    python如何使用代碼運(yùn)行助手

    在本篇文章里小編給大家分享了關(guān)于python代碼運(yùn)行助手用法,需要的朋友們可以學(xué)習(xí)下。
    2020-07-07

最新評論

洛阳市| 湘阴县| 任丘市| 忻州市| 金塔县| 卢湾区| 万载县| 昌吉市| 渝中区| 阿拉善右旗| 嘉义县| 武汉市| 渭南市| 衡阳市| 临泉县| 正阳县| 阳山县| 兰州市| 安陆市| 江口县| 垣曲县| 峨眉山市| 荃湾区| 门源| 西城区| 安达市| 三亚市| 青神县| 定结县| 连平县| 安乡县| 泰州市| 浪卡子县| 青州市| 龙岩市| 青阳县| 华亭县| 平安县| 太康县| 临颍县| 修水县|