我正在编写一个软件,并且我受到无法使用套接字连接到使用 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 访问它。
希望这是有道理的:)
谢谢,迈克。