| |
|
|
开发:
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 IPV4
1.1.2 IPV6
1.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年10日历 | -2025/10/25 3:36:41- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |