Java Socket服务端实现数据传输

需积分: 10 3 下载量 28 浏览量 更新于2024-09-14 收藏 1KB TXT 举报
"socketService.txt" 在给定的代码段中,我们看到了一个基于Java的简单Socket服务端实现。这个服务端监听2001端口,等待客户端连接,并与之进行数据交互。以下是对这段代码中涉及的关键知识点的详细说明: 1. **Socket编程**: Socket是网络通信中的一个概念,它代表了两个应用程序之间的通信链路。在这个例子中,服务器创建了一个`ServerSocket`对象,监听2001端口,用于接收客户端的连接请求。 2. **ServerSocket类**: `java.net.ServerSocket`是Java提供的用于服务器端的类,它提供了监听客户端连接的方法`accept()`. 当有客户端连接时,`accept()`方法会阻塞直到连接建立,然后返回一个新的`Socket`对象,表示与客户端的连接。 3. **多线程处理客户端连接**: 服务器在接收到新的客户端连接时,创建了一个新的线程来处理该连接。这样做是为了让服务器可以同时处理多个客户端连接,提高了服务的并发能力。线程内部的主要任务是读取客户端发送的数据并回应数据。 4. **InputStream和OutputStream**: - `java.io.InputStream`是用于读取字节流的抽象类,这里的`is=mySocket.getInputStream()`获取了客户端发送数据的输入流。 - `java.io.OutputStream`是用于写入字节流的抽象类,`os=mySocket.getOutputStream()`获取了向客户端发送数据的输出流。 5. **数据读写**: 服务器通过`InputStream`读取客户端发送的数据,使用`read(bytes)`方法读取到字节数组`bytes`中,然后通过`new String(bytes, 0, n)`将字节数组转换成字符串显示。反过来,服务器通过`OutputStream`向客户端发送数据,使用`write(jso.toString().getBytes())`方法将JSON对象序列化为字节数组并写入输出流。 6. **JSON操作**: 这里使用了开源库`net.sf.json.JSONArray`来处理JSON数据。`JSONArray.fromObject(list)`将Java集合对象`List<TermialMsgTab>`转换为JSON数组,方便在网络中传输。`jso.toString().getBytes().length`计算了JSON字符串的字节长度。 7. **DAO和Hibernate**: `TmtDao td = new TmtDao();`创建了一个DAO(Data Access Object)对象,用于数据库操作。DAO模式是一种设计模式,它提供了一种隔离应用程序和数据库交互的方式。这里还提到了`com.hibernate.pojo.TermialMsgTab`,这可能是Hibernate映射的POJO(Plain Old Java Object),用于表示数据库表中的实体。 8. **数据库查询**: `td.queryAll()`方法执行了数据库查询,返回了所有`TermialMsgTab`对象的列表。这些数据被转换成JSON格式并通过Socket发送回客户端。 这段代码实现了一个简单的Java Socket服务端,它接受客户端连接,读取客户端发送的数据,查询数据库,将查询结果转换为JSON格式并回送给客户端。这种设计可以用于构建基本的C/S架构的应用程序,例如消息传递、数据同步等场景。