我试图将一些数据从Firefox发送到java桌面应用程序。所以我的java类作为服务器工作,Firefox脚本作为客户端工作。当我使用另一个java类{{1}进行测试时数据成功发送到client.java
当我使用这个firefox脚本发送数据时,它实际上连接到服务器。但server.java
没有实时工作.i mean sever显示收到的数据时我关闭套接字send("text");
。但我知道socket.close();
代码没有问题。
这不起作用
server.java
这项工作
setTimeout(function(){socket.send("i'm firefox");},5000); // because socket isn't closed yet
但我真的不想关闭套接字,因为我想逐个发送大量数据。
这是在scratchpad [-browser]
上测试的完整代码setTimeout(function(){socket.send("i'm firefox");},5000);
setTimeout(function(){socket.close();},6000);
我认为java代码并不重要。但是here就是。
我问为什么我需要关闭套接字才能发送数据?如何在不关闭套接字的情况下发送数据?
<小时/> 更新
i made a Gif在这里显示我的问题,你可以看到数据没有实时发送,但是当套接字关闭时,所有数据都被刷新。
答案 0 :(得分:2)
它确实在工作。我们正在接收您的数据,但您目前正在等待新行打印收到的消息:
while ((inputLine = in.readLine()) != null) {
System.out.println("Server: " + inputLine);
out.println(inputLine);
if (inputLine.equals("Bye.")) {
break;
}
}
当前只有在关闭套接字时才会发生这种情况。只需在邮件末尾添加一个新行,它就会按预期运行:
var tcpSocket = Cc["@mozilla.org/tcp-socket;1"].createInstance(Ci.nsIDOMTCPSocket);
var socket = tcpSocket.open("127.0.0.1", 5000);
function sendMessage(msg){
socket.send(msg + "\n");
}
setTimeout(function(){
sendMessage("hi mark");
},3000);
setTimeout(function(){
sendMessage("hi johnny");
},5000);