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中的Matplotlib模块入门教程
Apr 15 Python
python获取当前日期和时间的方法
Apr 30 Python
Python3指定路径寻找符合匹配模式文件
May 22 Python
学习python 之编写简单乘法运算题
Feb 27 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
python版大富翁源代码分享
Nov 19 Python
python实现矩阵打印
Mar 02 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
Dec 12 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
python基于机器学习预测股票交易信号
May 25 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/01/05 PHP
PHP服务器页面间跳转实现方法
2012/08/02 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
Python中使用SAX解析xml实例
2014/11/21 Python
详解Python中find()方法的使用
2015/05/18 Python
python模拟Django框架实例
2016/05/17 Python
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
python实现大文本文件分割
2019/07/22 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
什么样的创业计划书可行性高?
2014/02/01 职场文书
军训口号
2014/06/13 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
vue ref如何获取子组件属性值
2022/03/31 Vue.js