Java Socket服务端实现数据传输
"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架构的应用程序,例如消息传递、数据同步等场景。
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.List;
import net.sf.json.JSONArray;
import com.dao.TmtDao;
import com.hibernate.pojo.TermialMsgTab;
public class Main {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(2001);
while (true) {
final Socket socket = serverSocket.accept();
new Thread() {
Socket mySocket = socket;
@Override
public void run() {
TmtDao td = new TmtDao();
try {
System.out.println(mySocket);
InputStream is = mySocket.getInputStream();
byte[] bytes = new byte[1024];
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 4
- 资源: 53
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全