Java SE 宋红康 days04-高级篇-网络编程
1. Socket:端口号与IP地址的组合得出一个网络套接字;
2. 计算机网络中实现通信必须有一些约定,即通信协议:对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
3. TCP 和 UDP
TCP 协议:
使用TCP协议前,须先建立TCP连接,形成传输数据通道
传输前,采用“ 三次握手”方式,点对点通信,是可靠的
TCP协议进行通信的两个应用进程:客户端、服务端。
在连接中可进行大数据量的传输
传输完毕,需释放已建立的连接,效率低
UDP 协议:
将数据、源、目的封装成数据包,不需要建立连接
每个数据报的大小限制在64K内
发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
可以广播发送
发送数据结束时无需释放资源,开销小,速度快;
4. 网络编程例题(InputStream.read()是阻塞式方法,需要手动shutdown告知其已经传输结束,才可以退出循环)
客户端:
// 客户端 Socket socket = null; OutputStream os = null; // 1.创建Socket对象,指明服务端的ip和端口号 InetAddress inet = InetAddress.getByName("127.0.0.1"); socket = new Socket(inet, 11129); // 2.获取一个输出流,用于输出数据 os = socket.getOutputStream(); // 3.写出数据的操作 os.write("你好我是.....".getBytes()); // 4.资源关闭,按照声明逆序关闭
服务端:
// 服务器端 ServerSocket ss = null; Socket socket = null; InputStream is = null; ByteArrayOutputStream baos = null; // 1.创建服务器端的ServerSocket,指明自己的端口号 ss = new ServerSocket(11129); // 2.调用accept()标识接收来自于客户端的socket socket = ss.accept(); // 3.获取输入流 is = socket.getInputStream(); // 4.获取输入流中的数据 // 不建议,可能会有乱码 // byte[] buffer = new byte[20]; // int len; // while ((len = is.read(buffer)) != -1) { // String str = new String(buffer, 0, len); // System.out.println(str); // } // ByteArrayOutputStream中存在一个数组,长度不够会自动往外扩 baos = new ByteArrayOutputStream(); byte[] buffer = new byte[5]; int len; while ((len = is.read(buffer)) != -1) { baos.write(buffer, 0, len); } // 5. 资源关闭
5. URL(Uniform Resource Locator):统一资源定位符,它表示 Internet 上某一资源的地址。
URL的基本结构由5部分组成:< 传输协议>://< 主机名>:< 端口号>/< 文件名>#片段名?参数列表
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~