SocketServer Связь между Java-сервером и PHP-клиентом

Я пытаюсь установить связь между SocketServer (сервер) в Java и Socket (клиент) в php.
Клиент может подключиться к хосту, клиент может отправить сообщение, и сервер успешно читает сообщение. Но проблема возникает, когда SocketServer пишет клиенту, клиент не получает сообщение с сервера.

Я читал другие вопросы по тому же сценарию (связь с сокетом java-php), но я просто не могу найти причину проблемы.

Если я использую Java Socket в качестве клиента, связь работает в обоих направлениях.

Сервер :

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

protected ServerSocket socket;
protected final int port = 9005;
protected Socket connection;
protected String command = new String();
protected String responseString = new String();

public void init(){

System.out.println( "Launching Server: " );
try{
socket = new ServerSocket(port);while(true)
{
// open socket
connection = socket.accept();
System.out.println( "Client Connected " );

// get input reader
InputStreamReader inputStream = new InputStreamReader(connection.getInputStream());
BufferedReader input = new BufferedReader(inputStream);

// get input
command = input.readLine();

// process input
System.out.println("Command: " + command);
responseString = command + " MC2 It Works!";

// get output handler
PrintStream response = new PrintStream(connection.getOutputStream());

// send response
response.println(responseString);
}
}
catch (IOException e){
e.printStackTrace();
}
}
}

Клиент :

class Client {

private $address;
private $port;

public function __construct($address, $port){
$this->address = $address;
$this->port = $port;
$this->init();
}

private function init(){

//create socket
if(! $socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'))){
$this->showError("socket create");
};

//establish connection
socket_connect($socket, $this->address, $this->port);

//write to server
$message = "I am a client";
socket_write($socket, $message, strlen($message)); //Send data

echo "Listening to Server\n";

//read from server
if(!$reponse = socket_read($socket, 2048, PHP_NORMAL_READ)){
$this->showError("socket read");
}

//print response
echo "Response from server------------------\n";
echo $reponse;

socket_close($socket);

}

private function showError($message){
echo ("Error: ".$message);
exit(666);

}

}

$address="localhost";$port=9005;
echo "Testing Client Server\n";
$client = new Client($address, $port);

Может кто-нибудь подсказать мне, в чем здесь может быть проблема?

1

Решение

На стороне сервера код ожидает строку (завершается переводом строки), в php Вы отправляете

socket_write($socket, $message, strlen($message));

Пожалуйста, проверьте отправленные вами данные и убедитесь, что вы отправили символ перевода строки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]