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编程中@property装饰器的用法
Jun 20 Python
详解Python中的__getitem__方法与slice对象的切片操作
Jun 27 Python
python发送邮件功能实现代码
Jul 15 Python
python实现读取并显示图片的两种方法
Jan 13 Python
基于Python闭包及其作用域详解
Aug 28 Python
利用python将图片版PDF转文字版PDF
May 03 Python
Python 分享10个PyCharm技巧
Jul 13 Python
Python基于当前时间批量创建文件
May 07 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 Python
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
May 14 Python
总结Python常用的魔法方法
May 25 Python
Python制作动态字符画的源码
Aug 04 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作为Shell脚本语言使用
2006/10/09 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
javascript静态的url如何传递
2007/05/03 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
javascript html5移动端轻松实现文件上传
2020/03/27 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python连接字符串的方法小结
2015/07/13 Python
Python科学计算之NumPy入门教程
2017/01/15 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
美国手机支架公司:PopSockets
2019/11/27 全球购物
GWebs公司笔试题
2012/05/04 面试题
实习报告评语
2014/04/26 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
团员年度个人总结
2015/02/26 职场文书
家长会开场白和结束语
2015/05/29 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技