首页/新闻资讯/正文详情

小小宅的网络编程进阶NO.2简单的serve_client

发布时间:2026/11/13 4:12:11 来源:云帆数科 栏目:资讯中心
小小宅的网络编程进阶NO.2简单的serve_client
俺的网络编程NO.2相对于NO.1就是更可扩展了逻辑上更合理了上一个还是只是能跑通就行不会太考虑如果有好几个客户端怎么办怎么能好几个客户端都同时上线。为了后面的好扩展肯定不能把代码都写在一个main函数里面应该要分函数来写。最后就是这次这个用到了多线程这个是俺第一次接触到多线程编程多线程在里面的逻辑原理和运用目前都不是很熟悉但也是勉强用上了。下面我来说说写这次这个server_client遇到的问题和总结出来的邪修小经验。1.框架怎么搭因为一开始只是听了一遍宇哥怎么实现的这个功能所以一开始怎么下手也不清楚也有可能是我太久没有写过代码了后面是一点一点看回放才逐渐清晰起来了。首先把那些初始化收发信息的方法写好然后写一个main主函数按照先初始化一个客户端或者服务端然后在进行多线程编程来进行实现收发信息的功能也可以在方法内写入那个线程操作现在我写的是一个总线程里面写多个嵌套的线程监听连接是一个线程然后收发一个线程收发里面是并列多线程分配给每一个连接成功的客户端一个线程。publicstaticvoidmain(String[]args){ServerservernewServer();server.init();ArrayListSocketsocketsnewArrayList();/** * 线程1持续监听新连接每来一个客户端就为它开一个专属读取线程 */newThread(()-{while(true){System.out.println(1-server-等待连接...);Socketsserver.Listen();System.out.println(2-server-连接成功: s.getInetAddress());sockets.add(s);System.out.println(3-server-当前连接数: sockets.size());// 为每个客户端启动独立的读取转发线程newThread(()-server.handleClient(s,sockets)).start();}}).start();}2.byte数组的使用宇哥在讲的过程中用到了byte字节数组一开始我不清楚这个和String在这里面的应用有啥区别也只是到了读写的时候用上去。后面去了解了一下。byte是存储的原始二进制的数据在socket的网络数据传输中只能传二进制的原始数据知己而传string 数据是不行的。特点byte用的空间很小。可以承载所有的数据类型的底层二进制一切的计算机数据 任何计算机数据都可以通过编码转成byte类型来传输和操作。堵塞方法了解到一个很关键的概念就是堵塞方法有的方法是堵塞方法有的代码逻辑写的是堵塞的二有些场景是不应该有这个堵塞的这个时候就应该去用别的方法解决他目前这次我用到的就是用多线程或者多开循环让不应该循环的功能或者属性类型分割开来实现互不干扰。像这里的给每个客户端都开单开一个线程就是最好的例子如果让所有客户端都在一个线程接收消息那么肯定需要用到循环而这样就要保证所有客户端必须按照循环的顺序完成相关接收才能一起都执行了会造成3发消息了但1没有发就会导致3发不出去给等12发完才能发出去造成了堵塞。4.那些send,recevie方法的参数传啥一开始在着手写的时候无从下手一个是对整体的框架不清晰还有一个就是这些方法的参数不知道传啥也就导致这些方法不知道怎么写。对于网络编程这些方法参数首先要传的是目标socket的输入或者输出流看是要传哪个流就要看是要给他发信息还是接受他的信息那么就是传自己的输入流如果是发送就传目标socket的输出流。publicvoidhandleClient(Socketself,ArrayListSocketsockets){try{InputStreaminself.getInputStream();while(true){System.out.println(self.getInetAddress() - 等待消息...);Stringmsgreceive(in,self);if(msgnull)break;System.out.println(收到 [self.getInetAddress()] : msg);for(intj0;jsockets.size();j){Sockettargetsockets.get(j);try{OutputStreamostarget.getOutputStream();send(msg,os);}catch(IOExceptione){System.out.println(转发给 target.getInetAddress() 失败);}}}}catch(IOExceptione){System.out.println(self.getInetAddress() 连接异常);}finally{sockets.remove(self);System.out.println(移除 self.getInetAddress()当前连接数: sockets.size());}}publicvoidsend(Stringmsg,OutputStreamos)throwsIOException{byte[]datamsg.getBytes(UTF-8);intlendata.length;os.write((len8)0xFF);// 高字节os.write(len0xFF);// 低字节os.write(data);os.flush();System.out.println(发送成功: msg);}publicStringreceive(InputStreamin,Sockets)throwsIOException{inthiin.read();if(hi-1)returnnull;intloin.read();if(lo-1)returnnull;intlen(hi8)|lo;byte[]bufnewbyte[len];for(inti0;ilen;i){intbin.read();if(b-1)returnnull;buf[i](byte)b;}StringmsgnewString(buf,UTF-8);System.out.println(从 s.getInetAddress() 收到: msg);returnmsg;}

相关推荐

AI检测工具在学术论文降重中的实践应用
AI检测工具在学术论文降重中的实践应用

1. 项目背景与核心价值最近在学术圈和职场新人群体中,一个被称为"导师严选"的AI检测工具突然火了起来。这个工具主打两大核心功能:一是通过千笔AI和WPS AI双引擎对比检测,二是专门针对专科层次论文和报告的优化设计。作为一名常年和… · 2026/11/9 10:42:05

LSSVM多输出回归预测:原理、实现与工业应用
LSSVM多输出回归预测:原理、实现与工业应用

1. 项目概述多输出数据回归预测是工业界和学术界都广泛关注的核心问题。在化工过程监控、电力负荷预测、医疗诊断等领域,我们经常需要同时预测多个相互关联的变量。传统单输出模型分别预测每个变量,忽略了输出间的相关性,导致预测精度下降。而… · 2026/11/12 17:42:44

Grok-3-Mini轻量级AI模型部署与优化实战
Grok-3-Mini轻量级AI模型部署与优化实战

1. 项目背景与核心价值去年在帮一家初创公司搭建AI客服系统时,我深刻体会到中小企业面临的技术选型困境——既需要足够强大的语言理解能力,又受限于有限的GPU预算。当时测试了市面上7种开源模型后,最终选择了Grok系列的一个早期版本。而如今G… · 2026/11/11 14:28:39

郴州市考电工证过期了别慌!考前押题+复审流程全解析
郴州市考电工证过期了别慌!考前押题+复审流程全解析

郴州市考电工证过期了别慌!考前押题+复审流程全解析 证书过期了不知道怎么复审延期?别急,郴州电工证的朋友们,今天咱们就来聊聊怎么解决这个燃眉之急,同时带你了解最新的政策变化和考试干货,尤其是【考前押题】这事儿,真的能帮你少走不少弯路!… · 2026/11/13 4:11:47

四川省住建厅查特种工,学历不高怕报不上名?良心建议来了
四川省住建厅查特种工,学历不高怕报不上名?良心建议来了

四川省住建厅查特种工,学历不高怕报不上名?良心建议来了 你是不是也觉得, 学历不高怕报不上名 ?其实很多人和你一样,担心自己文化程度不够,根本不敢去考特种作业证。但我想告诉你, 四川省住建厅查特种工… · 2026/11/13 4:11:47

河北涞源县电工证真实经历:外省证能转吗?老电工带你避坑
河北涞源县电工证真实经历:外省证能转吗?老电工带你避坑

河北涞源县电工证真实经历:外省证能转吗?老电工带你避坑 之前考的证在外省能不能转过来?这是很多在涞源县做电工的朋友最头疼的问题。我认识一个老电工,三年前在河南考的低压电工证,现在想在涞源县上岗,结果被拦在门外,说他证是外省的,不能直接使用。… · 2026/11/13 4:11:47

泉州电工证培训地址在哪?学历不高怕报不上名?这证是上岗必备
泉州电工证培训地址在哪?学历不高怕报不上名?这证是上岗必备

泉州电工证培训地址在哪?学历不高怕报不上名?这证是上岗必备 你是不是也这样, 学历不高怕报不上名 ,想着找个电工证先上岗再说?别急,这个证确实是 上岗必备 ,但报考流程、条件、材料你得搞清楚,别一不小心踩坑。 在泉州,很多人都在问:“… · 2026/11/13 4:11:47

郴州市考电工证值不值得考?新手避坑全攻略来了
郴州市考电工证值不值得考?新手避坑全攻略来了

郴州市考电工证值不值得考?新手避坑全攻略来了 你是不是也遇到过这种情况: 不知道去哪报名怕被中介坑 ?特别是在 郴州市考电工证 这个领域,信息真假难辨,报名渠道五花八门,稍有不慎就可能被套路。今天我就以一个 开封初次报考人员… · 2026/11/13 4:11:47

新平可以学电工证 30天速成电子证书全流程攻略 专治工地太忙没时间复习
新平可以学电工证 30天速成电子证书全流程攻略 专治工地太忙没时间复习

新平可以学电工证 30天速成电子证书全流程攻略 专治工地太忙没时间复习 工地太忙根本没时间复习考试?新平地区想考电工证的兄弟们,你们不是一个人在战斗。上个月我刚帮周口的李师傅处理完电工证考试的事,他就在工地天天加班,连晚上都得赶工,根本抽不… · 2026/11/13 4:10:47

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/12 14:09:01

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/11 19:07:25

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/12 23:27:43

维修电公用考电工证吗 在哪考最靠谱
维修电公用考电工证吗 在哪考最靠谱

维修电公用考电工证吗 在哪考最靠谱 工地太忙根本没时间复习考试,你是维修电工,天天在项目上跑,连抽个空背个题都难。那问题来了—— 维修电公用考电工证吗 ?答案是: 必须考 。尤其是在当前施工行业,没有电工证,连进场都可能被拦下。而且,… · 2026/11/13 0:00:08

电工证是不是可以登高?含金量和证书范围你必须知道的事
电工证是不是可以登高?含金量和证书范围你必须知道的事

电工证是不是可以登高?含金量和证书范围你必须知道的事 证书过期了不知道怎么复审延期,这事儿很多人遇到过,尤其是像你这样在郑州金水区做劳务班组负责人,手里握着几十个工人的证书,稍微一疏忽,就可能影响工程进度和公司信誉。特别是电工证是不是可以登… · 2026/11/13 0:00:08

鸡西电工证哪家下证快官方报名入口怎么找
鸡西电工证哪家下证快官方报名入口怎么找

鸡西电工证哪家下证快官方报名入口怎么找 你是不是也担心 学历不高怕报不上名 ?别急,今天我就来跟你说说, 鸡西电工证哪家下证快 ,还有 官方报名入口 到底怎么找,别让那些“代办”“代考”耽误了你的机会。… · 2026/11/13 0:00:08

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 4:35:34

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 4:36:01

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 21:15:21

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码