Java基础-网络编程Server-Client通信(1)
package com.hspedu.TestServerClient; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class Server { @Test public void startServer() throws IOException { ServerSocket serverSocket = new ServerSocket(8080); System.out.println("服务器Server正在监听8080端口,等待客户端Client连接..."); Socket socket = serverSocket.accept(); System.out.println("服务器socket的运行类型:" + socket.getClass()); InputStream inputStream = socket.getInputStream(); byte[] bytes = new byte[1024]; int readData = 0; while ((readData = inputStream.read(bytes)) != -1) { System.out.print(new String(bytes, 0, readData)); } // int readChar = 0; // while ((readChar = inputStream.read()) != -1) { // System.out.print((char) readChar); // } inputStream.close(); socket.close(); serverSocket.close(); } }
1、ServerSocket可以通过多个accept建立多个socket连接,可以和多个客户端连接,高并发;
2、ServerSocket的accept方法监听创建对应的端口(8080),阻塞状态等待client客户端连接,直至有client客户端连接继续执行;
3、建议使用字节bytes数组读取接收客户端client发送的信息,容量最好大于信息长度,否则容易会出现错位导致乱码问题(包括char单字节读取);
package com.hspedu.TestServerClient; import org.junit.Test; import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; public class Client { @Test public void startClient() throws IOException { Socket socket = new Socket(InetAddress.getLocalHost(), 8080); System.out.println("客户端socket = " + socket); OutputStream outputStream = socket.getOutputStream(); outputStream.write("客户端 >>> 服务器:hello, server".getBytes()); outputStream.close(); socket.close(); System.out.println("客户端退出。"); } }
1、new Socket(InetAddress.getLocalHost(), 8080)连接本机服务器的8080端口,返回socket套接字对象;
2、socket套接字对象的getOutputStream获取客户端client的输出流对象。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南