socket 多线程安全、粘包问题
脚本如下:
# -*- coding:utf-8 -*-
'''
@Author: Stefan@File: server_listener.py@Date: 2016-11-09If you execute this test script on servers, you have to modify the system parameter below:
sysctl net.ipv4.tcp_tw_recycle=1
'''
import sys
sys.path.append('/export/servers/app/xxxx')
import time
import socket
import threading
import multiprocessing
from src.xxxxclient.xxxx_client.lib.socket import header_pack, receive
HEADER_LENGTH = 16
DEFAULT_TCP_PORT = 1104
DATA = {'xxxx_ADMIN': 'thread_keepalive'}count_of_processes = range(1)
# DO NOT modify the parameter below
count_of_threads = range(1)# Unit: second
execute_time = 60def loop(times):""":return:"""time_start_now = time.time()time_future = time_start_now + execute_timewhile True:if time_start_now > time_future:breakelse:time_start = time.time()S = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# S.connect(('127.0.0.1', DEFAULT_TCP_PORT))S.connect(('x.x.x.x', DEFAULT_TCP_PORT))header, data = header_pack(DATA, HEADER_LENGTH)S.sendall(header+data)header, result = receive(S, HEADER_LENGTH, 1024)S.close()time_end = time.time()time_used = time_end - time_startprint "Thread lasted %.2f sec. Status: %s" % (time_used, result)time_end_now = time.time()time_gap = time_end_now - time_start_nowtime_start_now += time_gapdef multi_threads():""":return:"""threads_list = list()for i in count_of_threads:t = threading.Thread(target=loop, args=str(count_of_threads[i]).split())threads_list.append(t)for i in count_of_threads:threads_list[i].start()for i in count_of_threads:threads_list[i].join()class muliti_process(multiprocessing.Process):""""""def __init__(self):""":return:"""multiprocessing.Process.__init__(self)self.processes_list = list()def run(self):""":return:"""for i in count_of_processes:p = multiprocessing.Process(target=multi_threads,)self.processes_list.append(p)for i in self.processes_list:i.start()if __name__ == '__main__':p = muliti_process()global_start = time.time()p.start()p.join()global_end = time.time()global_used = global_end - global_startprint "==================\nTotal %.2f sec" % global_used
转载于:https://www.cnblogs.com/stefan-liu/p/6138565.html
socket 多线程安全、粘包问题相关推荐
- python/socket编程之粘包
python/socket编程之粘包 粘包 只有TCP有粘包现象,UDP永远不会粘包. 首先需要掌握一个socket收发消息的原理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 发 ...
- socket编程 TCP 粘包和半包 的问题及解决办法
socket编程 TCP 粘包和半包 的问题及解决办法 参考文章: (1)socket编程 TCP 粘包和半包 的问题及解决办法 (2)https://www.cnblogs.com/panchang ...
- SOCKET/串口通信粘包问题处理,附带详细代码
UDP TCP或者串口通信中有可能会出现粘包问题.具体解决办法有以下几种 1.自定义包体格式包含包头+包体长度 2.加大读取缓冲区buffer 本文介绍第一种方法的 socket通信中我们一般开启一个 ...
- socket,与粘包
1,socket(套接字) socket层 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口 server端 import socket sk = socket.socket ...
- Socket编程 TCP粘包问题及解决方案
① TCP是个流协议,它存在粘包问题 TCP是一个基于字节流的传输服务,"流"意味着TCP所传输的数据是没有边界的.这不同于UDP提供基于消息的传输服务,其传输的数据是有边界的.T ...
- 什么是粘包?socket 中造成粘包的原因是什么? 粘包的处理方式
1.粘包的概念 粘包:多个数据包被连续存储于连续的缓存中,在对数据包进行读取时由于无法确定发生方的发送边界,而采用某一估测值大小来进行数据读出,若双方的size不一致时就会使指发送方发送的若干包数据到 ...
- (Java)socket网络编程及处理socket粘包拆包问题
目录 1.socket简介 2.TCP/IP协议 3.tcp三次握手 4.socket的一些接口函数原理 5.java socket 长连接粘包拆包问题 6.socket模拟服务端客户端发消息 7.U ...
- 并发编程知识总结,软件开发架构,socket套接字模板,粘包问题,struct解决粘包问题,上传大文件数据,socketserver,关于操作系统的发展史,进程,线程。...
并发编程知识总结 软件开发架构 C/S: client:客户端 server:服务端 优点:占用网络资源少,软件的使用稳定 缺点:服务端更新后,客户端也要更新,需要使用多个软件,需要下载多个客户端 B ...
- Socket粘包问题
这两天看csdn有一些关于socket粘包,socket缓冲区设置的问题,发现自己不是很清楚,所以查资料了解记录一下: 一两个简单概念长连接与短连接: 1.长连接 Client方与Server方先建立 ...
- Socket编程(4)TCP粘包问题及解决方案
① TCP是个流协议,它存在粘包问题 TCP是一个基于字节流的传输服务,"流"意味着TCP所传输的数据是没有边界的.这不同于UDP提供基于消息的传输服务,其传输的数据是有边界的.T ...
最新文章
- 数学上各种空间概念的关系图
- 浅谈强化学习的方法及学习路线
- asp.net oracle优化,[转]ASP.NET性能优化
- 笔记:Hadoop权威指南 第4章 Hadoop I/O
- Tableau 必知必会之使用环境的配置需求
- linux提示密码没有凑效,陈连福的生信博客 | 第16期培训班将于2021.01.23-2021.02.01期间在武汉市举办,提前报名有有优惠!...
- mysql导入数据库注释乱码_source命令 导入.sql文件时,中文乱码 或者是注释乱码...
- 用C#完成Swift远程推送通知
- 第六天 购车程序
- Python核心编程读笔 4
- 《码出高效-阿里巴巴Java开发手册-泰山版》阿里最新出品的泰山版Java开发手册,告别垃圾代码
- c语言图像峰值信噪比,PSNRSSIM
- 微信公众平台开发问答
- 数据库原理知识点总结一
- Maven打包 错误: 程序包org.junit不存在
- 别在让你的 await Streaking 了
- 记录自定义维护视图的修改日志
- 钻进梦露胯下看裤衩颜色
- 用户行为分析zhi应用分析模型
- 「不得不看的猴子摘桃问题」