TCP网络编程:ServerSocket与Socket详解

1.ServerSocket

把连接到服务器的客户端进行统一处理.

1.serverSocket.accept

------》返回类型:Socket

如果客户端和服务器建立好了连接,服务器把内核建立好的连接拿到应用程序中。

如果没有建立好连接,accept阻塞。

注意:对端的IP与端口号信息都在accept返回的Socket对象中保存。

2.Socket

针对一个客户端,提供具体的服务.

1.socket.getInetAddress

拿到IP。

打印Ip

2.socket.getPort

拿到端口号

3.socket.getInputStream

------》返回类型:InputStream

拿到socket对象内置的流对象。

read就是对socket读

4.socket.getOutputStream

------》返回类型:outputStream

write就是对socket写

3.TCP服务器

1.TcEchoServer

先连接,再通信。先连接指的是先接受客户端的连接。

客户端new Socket对象,就会触发TCP建立连接的流程,服务器不做任何处理,就能配合客户端把连接处理完。具体的连接流程是在操作系统内核实现的,服务器把内核建立好的连接拿到应用程序中。

每次服务器收到一个客户端连接,都通过ServerSocket进行accept。

1.长连接与短连接

TCP一次连接中,分为长连接与短链接。

长连接:一次连接,有多次请求

短连接:一次连接,只有一次请求

2.TCP是面向字节流的

3.缓冲区(buffer)

缓冲区本质是一段内存空间。

进行IO操作中,操作硬盘、网卡、打印机等,都属于低效操作(与内存相比)。

所以要尽可能减少访问这些慢速设备的次数。所以把要写入IO设备的数据,先放到缓冲区,等缓冲区满后统一写入到IO设备里。

但这种写法是有bug的:如果缓冲区没满,那就不会发送请求!服务器一直阻塞!

4.flush冲刷应用程序的缓冲区

即使缓冲区没满,也能真正写入。

5.关闭服务器accept返回的socket

服务器每与一个客户端建立连接,就会new一个Socket对象。socket本质是一个文件,且文件描述符表有上限,如果达到上限,程序就会崩溃。这是一个隐藏的bug,看起来不影响程序的运行,但隐藏着很大的隐患。

关闭:每new的一个socket的生命周期跟随一次连接,在连接结束后close

2.TcEchoClient

相关推荐
源流之道5 小时前
联想Y700 五代(TB323FU)刷 ColorOS 16 教程指南
网络·ai·刷机指南·刷机心得
优化Henry6 小时前
LTE 载波频率与频点配置详解
运维·网络·学习·5g·信息与通信
科力锐品牌君7 小时前
应用级灾备 | 海量非结构化数据如何实现高效数据保护
linux·运维·网络·安全·系统安全·数据安全·灾备
盛世宏博北京7 小时前
档案库房防护能力升级:从八防到十二防的物联网全维度感知防护体系建设方案
网络·物联网
杨福宇8 小时前
100BASE T1以太网实时控制的危机V3.21 ——辅助自动驾驶难达标
网络·网络协议·安全·自动驾驶·汽车
福建佰胜张工8 小时前
A5E00839230西门子工业核心配件详解:参数、安装调试与故障运维全攻略
运维·网络·安全·自动化
Lancker8 小时前
chnroute-linux — 中国大陆 IP 段每日自动更新 + 「仅允许国内访问」落地
linux·运维·tcp/ip
辻弋2018 小时前
【无标题】
大数据·服务器·前端·搜索引擎·开源软件
蜗牛互联网9 小时前
WSL Containers GA:本地AI容器的生命周期、网络与治理验收
java·网络·人工智能·后端
红姐跨境书10 小时前
如何利用AI提升YouTube内容创作与运营效率
网络