Java ServersSocket 读取后关闭
Java ServersSocket close after reading
我尝试在 PHP
和 Java
之间架起桥梁,但失败了。用我的方法,发送一个字符串是有效的,但是服务器在读取数据后关闭。
这是我在 Java
中的 Class:
public class Server {
private static BufferedReader inputstream;
private static BufferedWriter outputstream;
private static ServerSocket server;
public static void main(String[] args){
System.out.println("Server gestartet");
createServer();
}
private static void createServer() {
try {
server = new ServerSocket(6666);
Socket client = server.accept();
inputstream = new BufferedReader(new InputStreamReader(client.getInputStream()));
outputstream = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
String temp = null;
while((temp = inputstream.readLine()) != null){
System.out.println(temp);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
inputstream.close();
outputstream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这就是我从 PHP:
发送字符串的方式
<?php
$socket = fsockopen('localhost', 6666, $errno, $errstr, 30);
if(!$socket){
echo("$errno <br> $errstr");
}
fwrite($socket, "Hello its me\n");
fclose($socket);
?>
非常感谢,我希望你能帮助我:)
您必须在 java 代码中循环 server.accept()。
在您的 java 代码中,您接受一次客户端连接,读取传入数据,仅此而已,您的应用程序结束。
您可以在循环中接受新连接,并在专用线程中处理数据。
还可以考虑将 try with resources 用于您的流。
我尝试在 PHP
和 Java
之间架起桥梁,但失败了。用我的方法,发送一个字符串是有效的,但是服务器在读取数据后关闭。
这是我在 Java
中的 Class:
public class Server {
private static BufferedReader inputstream;
private static BufferedWriter outputstream;
private static ServerSocket server;
public static void main(String[] args){
System.out.println("Server gestartet");
createServer();
}
private static void createServer() {
try {
server = new ServerSocket(6666);
Socket client = server.accept();
inputstream = new BufferedReader(new InputStreamReader(client.getInputStream()));
outputstream = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
String temp = null;
while((temp = inputstream.readLine()) != null){
System.out.println(temp);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
inputstream.close();
outputstream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这就是我从 PHP:
发送字符串的方式<?php
$socket = fsockopen('localhost', 6666, $errno, $errstr, 30);
if(!$socket){
echo("$errno <br> $errstr");
}
fwrite($socket, "Hello its me\n");
fclose($socket);
?>
非常感谢,我希望你能帮助我:)
您必须在 java 代码中循环 server.accept()。
在您的 java 代码中,您接受一次客户端连接,读取传入数据,仅此而已,您的应用程序结束。
您可以在循环中接受新连接,并在专用线程中处理数据。 还可以考虑将 try with resources 用于您的流。