Python TCP通信客户端服务端代码实例


Posted in Python onNovember 21, 2019

这篇文章主要介绍了Python TCP通信客户端服务端代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

TCP客户端:

import argparse, socket,sys
import time
# socket.setdefaulttimeout(20)

def recvall(sock, length):
  data = b''
  while len(data) < length:
    more = sock.recv(length - len(data))
    if not more:
      raise EOFError('总共有%dbytes,但只收到了%dbytes' % (length, len(data)))
    data += more
  return data
if __name__ == '__main__':
  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  sock.connect(('192.168.137.1', 10000))
  print('客户的分配了socket:', sock.getsockname())
  i=0
  for x in range(4):
   # try:
     text = '我是客户端你是服务器嚯嚯嚯!'.encode('utf-8')
     i=i+len(text)
     sock.sendall(text)
     sys.stdout.flush()
     print("已发送:",i)
   # except ConnectionResetError:
   #   pass
  sock.shutdown(socket.SHUT_WR)
  num = 0
  while True:
    reply = sock.recv(48) # b'Farewell, client'的长度
    num += len(reply)
    print('接收:',num)
    if not reply:
      print("ok")
      break

    # print('服务器返回:', reply.decode('utf-8'))
  print("理论上应该关闭sock")
  sock.close()
time.sleep(1)

TCP服务端:

import argparse, socket,sys

def recvall(sock, length):
  data = b''
  while len(data) < length:
    more = sock.recv(length - len(data))
    if not more:
      raise EOFError('总共有%dbytes,但只收到了%dbytes' % (length, len(data)))
    data += more
  return data
if __name__ == '__main__':
  sc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  sc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  sc.bind(('', 10000))
  sc.listen()
  print('正在侦听{}...'.format(sc.getsockname()))
  num = 0
  while True:
    scc, address = sc.accept()
    print('连接来自:', address)
    print('socket名字:', scc.getsockname())
    print('socket peer:', scc.getpeername())
    while True:
      message = scc.recv(42)#recvall(scc, 24) # 尝试 12,,20,28会是什么结果
      if not message:
        break
      # print('收到16-octet消息:', repr(message))
      print('收到16-octet消息:', (message.decode('utf-8')))
      scc.sendall(message)
      sys.stdout.flush()
      num += len(message)
      print("已发送:",num)

    scc.close()
    print('应答发送,socket关闭')
  sc.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
python递归删除指定目录及其所有内容的方法
Jan 13 Python
Python3.4实现远程控制电脑开关机
Feb 22 Python
用Python将mysql数据导出成json的方法
Aug 21 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
Python获取时间范围内日期列表和周列表的函数
Aug 05 Python
centos7中安装python3.6.4的教程
Dec 11 Python
Python 实现try重新执行
Dec 21 Python
Python实现自动访问网页的例子
Feb 21 Python
pycharm2020.2 配置使用的方法详解
Sep 16 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
Sep 23 Python
Python基于百度API识别并提取图片中文字
Jun 27 Python
python绘制随机网络图形示例
Nov 21 #Python
python绘制BA无标度网络示例代码
Nov 21 #Python
Python之指数与E记法的区别详解
Nov 21 #Python
python构建指数平滑预测模型示例
Nov 21 #Python
python实现画出e指数函数的图像
Nov 21 #Python
如何获取Python简单for循环索引
Nov 21 #Python
Python Web静态服务器非堵塞模式实现方法示例
Nov 21 #Python
You might like
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
Maps Javascript
2007/01/22 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
使用js画图之饼图
2015/01/12 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
JS+Canvas绘制时钟效果
2020/08/20 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
JSX在render函数中的应用详解
2019/09/04 Javascript
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
Django中的ajax请求
2018/10/19 Python
python对常见数据类型的遍历解析
2019/08/27 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
2014年国庆节广播稿
2014/09/19 职场文书
捐助倡议书
2015/01/19 职场文书
优秀志愿者感言
2015/08/01 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技