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读写文件操作示例程序
Dec 02 Python
python使用marshal模块序列化实例
Sep 25 Python
利用Python绘制MySQL数据图实现数据可视化
Mar 30 Python
Python使用progressbar模块实现的显示进度条功能
May 31 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
postman模拟访问具有Session的post请求方法
Jul 15 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
利用matplotlib实现根据实时数据动态更新图形
Dec 13 Python
Tensorflow获取张量Tensor的具体维数实例
Jan 19 Python
150行python代码实现贪吃蛇游戏
Apr 24 Python
Python创建自己的加密货币的示例
Mar 01 Python
asyncio异步编程之Task对象详解
Mar 13 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连接access数据库方法
2013/11/11 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
javascript实现显示和隐藏div方法汇总
2015/08/14 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
vue自定义指令directive实例详解
2018/01/17 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
Python判断变量是否已经定义的方法
2014/08/18 Python
python实现的重启关机程序实例
2014/08/21 Python
python统计日志ip访问数的方法
2015/07/06 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
python实现五子棋人机对战游戏
2020/03/25 Python
tensorflow如何批量读取图片
2019/08/29 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
浅谈Python中的模块
2020/06/10 Python
python中如何设置代码自动提示
2020/07/15 Python
初中生三年学习生活的自我评价
2013/11/03 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
小学教师办公室制度
2014/02/03 职场文书
教师校本培训方案
2014/02/26 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
出国导师推荐信
2015/03/25 职场文书
一级电子管军用接收机测评
2022/04/05 无线电
宝塔更新Python及Flask项目的部署
2022/04/11 Python
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技