PHP を使用してソケット クライアントを作成しており、Java によって実装されたソケット サーバーに文字列メッセージを投稿したいのですが、PHP ソケット クライアントからデータを投稿しようとすると、Java ソケット サーバーが java.io.StreamCorruptedException Exception でクラッシュします。 . 以下は、PHP ソケット クライアント、Java ソケット サーバー、およびメッセージを投稿したときに発生するエラーのコードです。
$fp = fsockopen("127.0.0.1", 1080, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "hello";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
Java コード
providerSocket = 新しい ServerSocket(1080, 10);
System.out.println("Waiting for connection");
connection = providerSocket.accept();
System.out.println("Connection received from " + connection.getInetAddress().getHostName());
out = new ObjectOutputStream(connection.getOutputStream());
out.flush();
in = new ObjectInputStream(connection.getInputStream());
sendMessage("Connection successful");
try{
message = (String)in.readObject();
System.out.println("client>" + message);
}
catch(ClassNotFoundException classnot){
System.err.println("Data received in unknown format");
}
}
catch(IOException ioException){
ioException.printStackTrace();
}
finally{
//4: Closing connection
try{
in.close();
out.close();
providerSocket.close();
}
catch(IOException ioException){
ioException.printStackTrace();
}
}
私が得たエラー
java.io.StreamCorruptedException: invalid stream header: 48656C6C
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at Provider.run(Provider.java:37)
at Provider.main(Provider.java:109)
Exception in thread "main" java.lang.NullPointerException
at Provider.run(Provider.java:85)
at Provider.main(Provider.java:109)