У меня есть простой TCP-сервер в Java.
// while(true), try catch etc.
serverSocket = new ServerSocket(4444); // Server socket
clientSocket = serverSocket.accept();
inputStreamReader = new InputStreamReader(clientSocket.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader);
message = bufferedReader.readLine();
OutputStream os = clientSocket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write("test");
bw.flush();inputStreamReader.close();
clientSocket.close();
bufferedReader.close();
os.close();
osw.close();
и я строю клиент на PHP, но он зависает при получении ответа, когда я собираю тот же самый простой клиент на Java, он работает хорошо. Как решить эту проблему?
PHP-клиент:
$socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
socket_connect($socket, $address, $port);
$message = 'test';$status = socket_sendto($socket, $message, strlen($message), MSG_EOF, $address, $port);
if($status !== FALSE) {
$message = '';
$next = '';
while ($next = socket_read($socket, 1)) {
$message .= $next;
}
var_dump($message);
} else {
echo "Failed";
}
socket_close($socket);
Я нашел решение этой проблемы.
Когда я отправляю сообщение, я должен сделать «\ n» в конце строки. Я не знаю почему. Может кто знает почему?
Других решений пока нет …