我正在尝试从javascript发送一条简单的消息。我想在java程序(服务器)中接收数据,但我似乎无法弄清楚如何在java中获取消息。
这是我的javascript:
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST", ip, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("posX=" + posX + "&posX = " + posX);
我有2个问题。
我真的希望有人可以帮助我。 任何帮助将不胜感激
答案 0 :(得分:1)
由于我从未做过这样的事情,我不知道是否有任何最快的方法,但这样Java应用程序必须侦听TCP端口80,应该是这样。它还应该发送HTTP响应。
编辑: 在深入探讨这个问题后,我想出了两件事:
BufferedReader
及其readLine
方法,它只会挂起并等待。它不会因为#2 AJAX请求显然没有关闭套接字,因此java程序读取的流不会终止,因此您无法通过等待read
InputStreamReader
方法来结束读取返回-1。我发现这一点的唯一方法是检查输入流是否准备就绪。
所以一个非常粗糙,但最小的例子是:
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception {
ServerSocket welcomeSocket = new ServerSocket(80);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
InputStreamReader inFromClient = new InputStreamReader(connectionSocket.getInputStream());
int c = 0;
while(true) {
c = inFromClient.read();
System.out.print((char)c);
if(!inFromClient.ready()) {
break;
}
}
System.out.println("-------------------------");
}
}
}
答案 1 :(得分:0)
我认为HttpServer正是您所寻找的。 它侦听端口80以接受Http-Requests