我们的项目是用DotNet实现Socket连接,用多线程处理多用户。我就谈一下在实现过程中遇到的问题。下面是我服务器的简化实现。
private Socket clientSocket; public void Start() { Thread thread=new Thread(new ThreadStart(MainService)); thread.Start(); } void MainService() { listener=new TcpListener(111111); listener.Start(); while(true) { Socket s= listener.AcceptSocket();//帧听客户连接 clientSocket=s; Thread clientservice = new Thread(new ThreadStart(ClientService)); clientservice.Start(); Thread.Sleep(200);//1、等待传值给线程中的变量,防止多用户造成冲突 } } void ClientService() { string command; string receiveStr; string fileName,fileSize; Socket sock=clientSocket; EndPoint oldEP=sock.RemoteEndPoint; byte[] bb=new byte[200]; while(true) { ii=sock.ReceiveFrom(bb,ref oldEP);//接收数据 if(ii==0)//2、客户端连接断开,就会不停接收0个字节 { break; } receiveStr=Encoding.Default.GetString(bb,0,bb.Length); command=ReadLineFrom(receiveStr,1).ToLower();//ReadLineFrom读取字符串中的一行数据 Switch(command) { cace “upload“: fileName=ReadLineFrom(receiveStr,2); fileSize=ReadLineFrom(receiveStr,3); uploadFile(sock,fileName,Int32.Parse(fileSize));//接受数据方法, break; .................... } } void uploadFile(Socket sock,string fileName,int fileSize) { int loadSize=0; byte[] bb; int blen=102400; NetworkStream stream=new NetworkStream(sock); FileStream fs=File.OpenWrite(tempstr); while(loadSize { if(loadSize>fileSize-102400) blen=fileSize-loadSize; bb=new byte[blen]; int ii=stream.Read(bb,0,bb.Length);//3、实际接受数据时每次可能没有10240个字节 fs.Write(bb,0,ii); loadSize+=ii; } fs.Close(); stream.Close(); }
1、等待传值给线程中的变量,防止多用户造成冲突
2、客户端连接断开,就会不停接收0个字节
判断客户端是否断开要用这个方法实现,Sokcet里带的Connected不起作用,只要连接上,中途不出现发送和或接收数据错误,客户断开与否都是返回true。Poll(100,SelectMode...)返回任何模式都是true。
3、实际接受数据时每次可能没有10240个字节
客户端我就不写了,用TcpClient连接就可以了,当然实际应用中,可能就要自己写规则了
这些问题解决了,只要做适当的处理,视频,声音都不是问题了。
分享到:
相关推荐
探究comsol热电效应模型:多物理场耦合与计算模拟分析,comsol热电效应模型。 ,comsol; 热电效应; 模型; 仿真模拟; 物理效应,Comsol热电效应模型解析
1、文件内容:pcre2-10.23-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/pcre2-10.23-2.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
《三菱PLC与组态王联动的综合排水系统自动化控制解析与实践——包含5泵排水五泵矿井电气自动控制梯形图原理图及IO分配与组态画面详解》,No.914 三菱PLC和组态王组态5泵排水五泵矿井综合排水电气自动控 带解释的梯形图接线图原理图图纸,io分配,组态画面 ,核心关键词:三菱PLC; 组态王组态; 5泵排水; 矿井综合排水; 电气自动控制; 梯形图接线图; 原理图图纸; IO分配; 组态画面。,"三菱PLC与组态王联控五泵矿井排水系统电气自动化"
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
基于Comsol模拟的近场金属探针激发表面等离子体激元(SPP)的研究,Comsol近场金属探针激发SPP。 ,Comsol; 近场金属探针; SPP; 激发。,"Comsol模拟激发金属探针的SPP现象"
"基于COMSOL损伤模型的井筒周围应力分布模拟研究",COMSOL损伤模型,模拟井筒周围应力分布。 ,COMSOL损伤模型; 井筒应力分布模拟; 周围应力分布; 井筒损伤模型。,COMSOL模拟井筒应力分布模型
1、文件内容:pcp-webapp-graphite-4.3.2-13.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/pcp-webapp-graphite-4.3.2-13.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:perl-Mozilla-CA-20130114-5.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-Mozilla-CA-20130114-5.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
JEECGJ2EE“”(Online Coding() - > - > MERGE) Java90%
DeepSeek团队-V2大模型论文: A Strong, Economical, and Efficient Mixture-of-Experts Language Model 发表:2024年6月
生成式对抗网络在金融数据中的应用
激光清洗补技术:深入解析固体传热、变形几何与固体力学模块的教学视频,激光清洗补,用到的模块:固体传热,变形几何,固体力学。 教学视频 ,激光清洗补; 固体传热; 变形几何; 固体力学; 教学视频,激光清洗补教学视频:固体传热与固体力学原理的变形几何应用
Ollama ollama ollama ollama ollama ollama
参考链接:https://www.bilibili.com/video/BV1iFFVenEMi/?vd_source=bf2d43514ea61b1121399ab65421e37c 框架:SSM 数据库:MySQL 有数据库文件,项目完整,拿来即可用 1.登录模块:仓库管理员登录和退出系统。 2.库存管理模块:管理员在该模块中完成了对库存信息的查询功能。 3.仓库管理模块:管理员在该模块中完成了对仓库货物出入库信息的添加、查询、 删除、修改等功能。 4.人员管理模块:管理员可以在该模块中完成了对仓库管理员信息的添加、查询、 删除、修改等功能。 5.信息管理模块:管理员可以在该模块中定义了对供货商,客户,货物以及仓库信 息的添加、查询、删除、修改等功能。 6.系统维护模块:管理员可以在该模块修改登录密码与登录日志查询。
价值99元CoreNext主题1.5.2免授权 | WordPress主题模板 主题结合了知名框架Vue和element库,并且使用前端工程化webpack打包,将多个文件打包成一个文件,大幅度提升加载性能。使用了前端工程化的情况,并没有做到完全前后端分离,而是混合开发,保证主题流畅的同时,SEO功能同样不丢失。 目录结构,有别于传统主题,大幅度精简文件,统一入口。外保外观和功能的情况下,主题压缩后体积仅1M,有着无与伦比的优势,就算是虚拟机,也能非常流畅的运行。大家可以对比一下同类型的主题。 更新日志 v1.5.2 新增 本地头像系统,开启后彻底使用本地头像 优化 SEO功能 调整 作者边栏动态排序内容 调整 文章引用内容界面 v1.5.1 新增 头像系统 支持用户自行上传图片 [主题设置->用户中心->允许用户上传头像] 修复 自动深色模式 logo用默认 优化 小工具 首篇大图文章高度 调整 获取文章缩略图逻辑
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1、文件内容:perl-HTML-Tagset-3.20-15.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-HTML-Tagset-3.20-15.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装