私はソフトウェアを書いていますが、ソケットを使用して 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を介してアクセスできます。
これが理にかなっていることを願っています:)
ありがとう、マイク。