工业互联网@程序员的术与道:术——编程基本功之网络编程( 二 )
与TCP服务器相比 , 少了 listen 和 accept 两个过程 , 即建立连接的两个步骤 。
- UDP client
b.数据通讯 (读recvfrom / 写sendto)
四、java网络编程Java的网络编程主要涉及到的内容是Socket编程 , 那么什么是Socket呢?简单地说 , Socket , 套接字 , 就是两台主机之间逻辑连接的端点 。 TPC/IP协议是传输层协议 , 主要解决数据如何在网络中传输 , 而HTTP是应用层协议 , 主要解决如何包装数据 。 Socket , 本质上就是一组接口 , 是对TCP/IP协议的封装和应用(程序员层面上) 。
Socket编程主要涉及到客户端和服务器端两个方面 , 首先是在服务器端创建一个服务器套接字(ServerSocket) , 并把它附加到一个端口上 , 服务器从这个端口监听连接 。 端口号的范围是0到65536 , 但是0到1024是为特权服务保留的端口号 , 我们可以选择任意一个当前没有被其他进程使用的端口 。
客户端请求与服务器进行连接的时候 , 根据服务器的域名或者IP地址 , 加上端口号 , 打开一个套接字 。 当服务器接受连接后 , 服务器和客户端之间的通信就像输入输出流一样进行操作 。
4.1.1 创建连接Java为TCP协议提供了两个类:Socket类和ServerSocket类 。
一个Socket实例代表了TCP连接的一个客户端 , 而一个ServerSocket实例代表了TCP连接的一个服务器端 , 一般在TCP Socket编程中 , 客户端有多个 , 而服务器端只有一个 , 客户端TCP向服务器端TCP发送链接请求 , 服务器端的ServerSocket实例则监听来自客户端的TCP连接请求 , 并为每个请求创建新的Socket实例 , 由于服务端在调用accept()等待客户端的连接请求时会阻塞 , 直到收到客户端发送的连接请求才会继续往下执行代码 , 因此要为每个Socket连接开启一个线程 。
服务器端要同时处理ServerSocket实例和Socket实例 , 而客户端只需要使用Socket实例 。 另外 , 每个Socket实例会关联一个InputStream和OutputStream对象 , 我们通过将字节写入套接字的OutputStream来发送数据 , 并通过从InputStream来接收数据 。
4.1.2 使用ServerSocket创建TCP服务器
Java中能接收其他通信实体连接请求的类是ServerSocket , ServerSocket对象用于监听来自客户端Socket连接 , 如果没有连接 , 它将一直处于等待状态 。
ServerSocket包含一个监听来自客户端连接请求的方法 。
- Socket accpet()
- ServerSocket(int port)
- ServerSocket(int port int backlog)
- ServerSocket(int port int backlog IntetAddress localAddr)
服务端的工作是建立一个通信终端 , 并被动地等待客户端的连接 。 典型的TCP服务端执行如下两步操作:
1.创建一个ServerSocket实例并指定本地端口 , 用来监听客户端在该端口发送的TCP连接请求
2.重复执行
1)调用ServerSocket的accept()方法以获取客户端连接 , 并通过其返回值创建一个Socket实例;
2)为返回的Socket实例开启新的线程 , 并使用返回的Socket实例的I/O流与客户端通信;
- 比华为还难搞的国产企业,美国“实体清单”也管不住?
- 工业互联网“神助攻”,赋能山西制造业
- 每年卖出超600万!卖了一辈子线面的福建人,盯上了互联网
- 争议脉脉:在互联网公司“内幕中心”发帖还安全吗?
- 慢病|报告:2025年中国互联网慢病管理市场规模或超2300亿
- 寻找青岛“宝藏”民企:蓝海软通 从移动互联网的追随者到人工智能教育引领者
- 平台|70.5%受访者体验过互联网用户画像 感觉符合实际的不足一半
- 人民百姓.为什么成为互联网.网络平台的奴隶?
- 互联网巨头争相入场,“作业君”还是“作业帮”傻傻分不清
- 阿里入围全球最高工业奖总决赛