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中实现php的var_dump函数功能
Jan 21 Python
Python下载指定页面上图片的方法
May 12 Python
判断网页编码的方法python版
Aug 12 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
python射线法判断一个点在图形区域内外
Jun 28 Python
django多对多表的创建,级联删除及手动创建第三张表
Jul 25 Python
对django2.0 关联表的必填on_delete参数的含义解析
Aug 09 Python
python 爬取学信网登录页面的例子
Aug 13 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
Sep 04 Python
Python 解析xml文件的示例
Sep 29 Python
Django一小时写出账号密码管理系统
Apr 29 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开发者事半功倍的十大技巧小结
2010/04/20 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
14款NodeJS Web框架推荐
2014/07/11 NodeJs
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
基于Django用户认证系统详解
2018/02/21 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Python模块future用法原理详解
2020/01/20 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
为什么是 Python -m
2020/06/19 Python
Python中pass的作用与使用教程
2020/11/13 Python
挪威手表购物网站:Klokker
2016/09/19 全球购物
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
师范生求职信
2014/06/14 职场文书
员工趣味活动方案
2014/08/27 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
民事诉讼代理词
2015/05/25 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers