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中使用smtplib和email模块发送邮件实例
Apr 22 Python
简单介绍Python中的try和finally和with方法
May 05 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
python实现自动发送邮件
Jun 20 Python
Python实现的特征提取操作示例
Dec 03 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
python 获取utc时间转化为本地时间的方法
Dec 31 Python
如何使用Python实现斐波那契数列
Jul 02 Python
Python笔记之观察者模式
Nov 20 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
Python爬虫开发与项目实战
Dec 16 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在数组中查找指定值的方法
2015/03/17 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
jQuery代码优化之基本事件
2011/11/01 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
javascript实现拖放效果
2015/12/16 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
python实现简单ftp客户端的方法
2015/06/28 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
如何在django中实现分页功能
2020/04/22 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
中国网上药店领导者:1药网
2017/02/16 全球购物
高中生学期学习自我评价
2014/02/24 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
学生个人总结范文
2015/02/15 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL