| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 网络通信学习笔记 -> 正文阅读 |
|
[网络协议]网络通信学习笔记 |
目录 2.2.4 TCP协议服务端同时接收多个客户端消息实现(重点) 1.概念1.1 IP地址1.1.1 IPV41.1.2 IPV61.2 IP地址操作类?1.3 端口号2.传输协议2.1 UDP协议2.1.2 UDP协议使用及其API示例: 发送端: ?接收端: ?扩展: ?多发多收可以用while死循环来实现,一边不断发数据,一边不断接收数据 2.1.3 UDP广播、组播? UDP实现广播: ?UDP实现组播: 2.2 TCP协议? 2.2.1 TCP协议客户端(一发一收)实现及其API示例: 客户端:? 注意:字节输出流这里用print会报错,因为服务端接受的是一行数据,这里要改成println;一般在退出时才关管道,否则可能导致数据还没传到服务端管道就关闭了。 2.2.2 TCP协议服务端(一发一收)实现及其API示例: 注意:如果客户端只发了一条信息的话服务端用if()接收才不会报错,如果用while()接收的话会导致客户端关闭时服务端因接收不到一行数据而报错。 2.2.3 TCP协议多发多收实现?原理:使用一个死循环不断发送和接收消息。 2.2.4 TCP协议服务端同时接收多个客户端消息实现(重点)示例: 客户端代码不变。 ? 原理:引入多线程处理,服务端每接收到一个socket管道都将其扔给一个线程处理。 注意:当客户端退出后会因为客户端管道关闭而报错,解决方式是在线程的catch{}中删掉e.printStackTract()。 2.2.5 TCP通信模型,线程池优化示例: 客户端代码不变。 Runnable继承类代码与上面ServerReaderThread类run()方法一样。 原理:在服务端创建线程池,将接收到的socket管道扔给线程池对象处理。 ? 2.2.6 TCP通信模型,即时通信的实现示例: 客户端代码: ? ?在每个创建的线程中定义一个死循环用于接收服务端发来的消息 ?服务端代码: 用一个集合存取所有连接的socket管道? 在方法中遍历集合中的socket管道对象并把接收到的消息发送过去 2.2.7 模拟BS系统示例: |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/8 11:53:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |