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编程之Re模块下的函数介绍
Oct 28 Python
Django 浅谈根据配置生成SQL语句的问题
May 29 Python
Python实现在某个数组中查找一个值的算法示例
Jun 27 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
python按比例随机切分数据的实现
Jul 11 Python
Python模块的定义,模块的导入,__name__用法实例分析
Jan 07 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
Django多层嵌套ManyToMany字段ORM操作详解
May 19 Python
python递归函数用法详解
Oct 26 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 Python
Python获取字典中某个key的value
Apr 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+APACHE实现用户论证的方法
2006/10/09 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
webpack 处理CSS资源的实现
2019/09/27 Javascript
Python类的基础入门知识
2008/11/24 Python
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
深入解析Python中的变量和赋值运算符
2015/10/12 Python
Python快速从注释生成文档的方法
2016/12/26 Python
Django中Forms的使用代码解析
2018/02/10 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
下载官网python并安装的步骤详解
2019/10/12 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
python eventlet绿化和patch原理
2020/11/21 Python
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
大学生职业生涯规划书模板
2014/01/03 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
一起来学习Python的元组和列表
2022/03/13 Python