我正在编写一款软件,但受到限制,不能使用socket来连接使用ServerSocket的Java应用程序。
我想尝试使用URL连接,因为可以定义要连接的端口。
例如:
127.0.0.1:62666
我有一个服务器应用程序监听连接并将输入写入到jTextArea中。当通过浏览器连接到服务器(127.0.0.1:62666)时,它会输出:
GET / HTTP/1.1
GET /favicon.ico HTTP/1.1
我有另一个应用程序,可以通过URL连接连接到ServerSocket:
try{
URL url = new URL("http://127.0.0.1:62666");
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
connection.connect();
PrintWriter writer = new PrintWriter(connection.getOutputStream());
writer.print("Hello");
System.out.println("should have worked");
writer.flush();
writer.close();
}catch(IOException e){
e.printStackTrace();
}
它会打印出“应该已经工作”的信息,但它从未将任何内容写入服务器的jTextArea。服务器应用程序的代码如下:
try{
ServerSocket serverSock = new ServerSocket(62666);
while(doRun){
Socket sock = serverSock.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(sock.getInputStream()));
PrintWriter writer = new PrintWriter(sock.getOutputStream());
InfoReader.gui.writeToTextArea(reader.readLine() + " From IP: " + sock.getInetAddress() + "\n");
writer.println("Testing123");
writer.close();
reader.close();
}
}catch(IOException e){
e.printStackTrace();
}
注意:当通过浏览器连接时,它会显示文本“Testing123”。
因此,我想知道如何以我尝试的方式完成这项任务,或者读取ServerSocket访问的URL,以便我可以通过URL访问它并在URL中传递参数。
希望这样说得清楚 :)
谢谢, 迈克。