千古难题:不断开Socket连续发送JSON数据

oTaoYuanZuoZi 2012-08-13 03:32:50
使用最基本socket编写程序
要求是当客户端连接上服务器后,socket一直不断开。
其中一端发送一个JSON对象,另外一端接收后做出处理,然后能够循环做上述事件。
每次发送的JSON对象的数据内容是随机的,每次发送的JSON对象转化为字符串的长度也是随机的。
求围观,求真相.................
因为服务端是别人用C/C++写的,我只能用socket来模拟服务端
...全文
772 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oTaoYuanZuoZi 2012-08-20
  • 打赏
  • 举报
回复
没有看到 我想要的答案
同光和尘 2012-08-15
  • 打赏
  • 举报
回复
长连接?
MiceRice 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
我说了服务端是别人用C/C++写的只能用最基本的socket啊
如果可以用其他的技术,我也能够解决,譬如apache的MINA也可以达到,问题是,现在我不能使用这些东西。只能用基本的socket。
[/Quote]

既然是Socket,那就不要强调JSON了吧,难道你还要模仿HTTP协议么?

我还是没看出难度究竟是啥,你用Java写过SocketServer 和 Socket 之间的通讯协议么?

QQ的模型很简单(只是示例,并非实际情况):
1、QQ服务器启动后,建立ServerSocket监听连接请求;
2、Client启动时,通过Socket去连接QQ服务器;
3、QQ服务器会接获连接请求,然后启动一条Worker线程来为该Socket连接提供服务;
4、QQ服务器继续监听下一个连接请求;
5、Client可以与服务端的Worker线程进行双向通讯了。


给个简单的服务端示例:

import java.io.*;
import java.net.*;
import java.util.*;

public class EchoServer {
public static final int PORT = 10000;

public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(PORT);
try {
while (true) {
System.out.println("服务端就绪,等待客户端连接");

// 侦听并接受到此套接字的连接。此方法在进行连接之前一直阻塞。
Socket socket = serverSocket.accept();
System.out.println("有客户端连接上来了,已建立Socket链接");

EchoServerWorker worker = new EchoServerWorker(socket);
System.out.println("启动工作线程");
new Thread(worker).start();
}
} finally {
serverSocket.close();
}
}
}

class EchoServerWorker implements Runnable {
private Socket socket; // 工作线程所服务的目标Socket

EchoServerWorker(Socket socket) {
this.socket = socket;
}

public void run() {
try {
try {
// 准备输入输出端口
Scanner sc = new Scanner(socket.getInputStream());
OutputStreamWriter out = new OutputStreamWriter(socket.getOutputStream());
System.out.println("Socket for " + socket.getPort() + " started.");

// 读取信息并直接返回,这里按行读取(\n)
String str;
while ((str = sc.nextLine()) != null) {
System.out.println("【From Client】" + str);
out.write(str + "\n");
out.flush();
}
} finally {
socket.close();
System.out.println("Scoket for " + socket.getPort() + " closed.");
}
} catch (IOException ex) {
ex.printStackTrace();
}
}

}
dddsfdfgfdgfdg 2012-08-13
  • 打赏
  • 举报
回复
长连接??
oTaoYuanZuoZi 2012-08-13
  • 打赏
  • 举报
回复
求置顶啊
oTaoYuanZuoZi 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

啥千古难题啊,别把人都吓死了。。。

Servlet别结束就行了,每次发送完毕记得调用 flush()

参见:
http://blog.csdn.net/ldh911/article/details/7268879
[/Quote]
首先我承认我是标题党。。。-_-!
哥哥啊,我说了服务端是别人用C/C++写的只能用最基本的socket啊
如果可以用其他的技术,我也能够解决,譬如apache的MINA也可以达到,问题是,现在我不能使用这些东西。只能用基本的socket。
真实的场景是:服务端应用在ARM开发板上面,没有装JAVA环境,所以也没有servlet,也没有apache的MINA,
我要实现的效果和QQ类似,客户端和服务器都可以主动发起消息。
MiceRice 2012-08-13
  • 打赏
  • 举报
回复
啥千古难题啊,别把人都吓死了。。。

Servlet别结束就行了,每次发送完毕记得调用 flush()

参见:
http://blog.csdn.net/ldh911/article/details/7268879
内容概要:本文针对网型T型三电平逆变器的低电压穿越(LVRT)能力及其综合控制策略展深入研究,重点分析电网电压跌落条件下逆变器的动态响应特性与稳定性控制方法。研究基于Simulink平台构建详细的系统仿真模型,融合改进的电流环控制策略与中点电位平衡控制算法,有效提升逆变器在故障工况下的电流跟踪精度、过流抑制能力和直流侧中点电压稳定性。通过多场景仿真验证,所提出的综合控制策略能够显著增强逆变器在低电压穿越过程中的鲁棒性与电能质量,确保新能源系统在电网扰动下的持续可靠并网运行。; 适合人群:电力电子、新能源发电、电力系统自动化等相关专业的研究生、科研人员及从事并网逆变器设计与控制的工程技术人员。; 使用场景及目标:①深入理解三电平逆变器在电网故障下的运行机理与控制挑战;②掌握低电压穿越技术中电流限幅、故障响应及中点电位平衡的核心控制方法;③应用于光伏、风电等新能源并网系统的控制策略发与仿真验证; 阅读建议:建议结合提供的Simulink仿真模型进行动手实践,重点关注控制器参数设计、中点电位观测与调节模块的实现逻辑,并通过对比不同电压跌落深度和控制策略的仿真结果,深化对系统动态行为与控制性能的理解。
yolo算法港口码头船舶目标检测数据集 目标类别:['ship'] 中文类别:['船舶'] 训练集:16046 张 验证集:1971 张 测试集:983 张 总计:19000 张 该数据集提供了data.yaml文件,内容如下: train: ../train/images val: ../valid/images test: ../test/images nc: 1 names: ['ship'] 该数据集聚焦于港口码头及近海水域的船舶检测任务,涵盖多种类型船舶在不同天气、光照和水文条件下的真实场景。图像样本覆盖了货轮、客轮、拖船、油轮及工程船等典型船只,充分体现了海上交通与港口作业的复杂性与多样性。通过高精度标注,该数据集为海上智能监控、船舶识别与航行安全预警系统提供了高质量的数据支撑,具有重要的实际应用价值。 该数据集在训练集、验证集和测试集之间实现了科学合理的分布,训练集包含16046张图像,验证集1971张,测试集983张,总计19000张。这种分布结构确保了模型在训练过程中具备充足的样本学习能力,同时验证集与测试集规模适中,能够有效评估模型的泛化性能与稳定性,符合深度学习项目对数据划分的标准要求。 该数据集的标注工作严谨规范,所有船舶均采用精确边界框进行标注,覆盖了不同尺寸、姿态和视角下的目标实例。标注框紧密贴合船舶轮廓,未出现明显偏移或遗漏,且在复杂背景(如水面反光、雾天、桥梁遮挡)下仍保持高一致性。标注信息完整可靠,为后续模型训练提供了坚实基础。 该数据集可广泛应用于港口自动化管理、海上交通监控、船舶动态跟踪、航道安全预警以及海洋执法等领域。其丰富的场景覆盖和多样化的船舶类型使其特别适用于智慧港口建设、海上搜救系统发及航运物流智能化升级,能够有效提升相关系统的识别准确率与响应效率,推动海洋经济数字化转型。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧