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实现文件按照日期命名的方法
Jul 09 Python
老生常谈进程线程协程那些事儿
Jul 24 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
python从zip中删除指定后缀文件(推荐)
Dec 05 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
Feb 27 Python
详解用Python爬虫获取百度企业信用中企业基本信息
Jul 02 Python
Python如何定义有默认参数的函数
Aug 10 Python
Python 操作SQLite数据库的示例
Oct 16 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
服务器端解压缩zip的脚本
2006/12/22 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
2015/05/11 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
对联广告js flash激活
2006/10/19 Javascript
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
js 处理URL实用技巧
2010/11/23 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
详解利用jsx写vue组件的方法示例
2017/07/17 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
JS伪继承prototype实现方法示例
2018/06/20 Javascript
小程序转发探索示例
2019/02/19 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python使用MD5加密字符串示例
2014/08/22 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
五年级数学教学反思
2014/02/11 职场文书
事务机电主管工作职责
2014/02/25 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python