Мне нужно отправить информацию с php-клиента на java-сервер, но никто не получает на стороне сервера, хотя один оператор печати успешно выполняется на сервере, текст с клиента не может получить на стороне сервера. Вот коды:
Сервер Java:
import java.io.BufferedReader; import java.net.*; import java.io.*; public class javaphp2 { private static ServerSocket socket; private static Socket connection; private static String command = new String(); private static String responseStr = new String(); private static int port = 4309; public static void main(String args[]) { System.out.println("Signal Server is running."); try { socket = new ServerSocket(port); while (true) { connection = socket.accept(); InputStreamReader inputStream = new InputStreamReader(connection.getInputStream()); DataOutputStream response = new DataOutputStream(connection.getOutputStream()); BufferedReader input = new BufferedReader(inputStream); command = input.readLine(); //System.out.println("The input is" + command); response.writeBytes(responseStr); response.flush(); //response.close(); System.out.println("Running"); } } catch (IOException e) { System.out.println("Fail!: " + e.toString()); } System.out.println("Closing..."); } }
Клиент PHP:
#!/usr/local/bin/php -q <?php $address = '132.119.90.165'; $port = 4309; $socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp')); socket_connect($socket, $address, $port); $message = 'Apple'; $len = strlen($message); $status = socket_sendto($socket, $message, $len, 0, $address, $port); if($status !== FALSE) { $message = ''; $next = ''; while ($next = socket_read($socket, 4096)) { $message .= $next; } echo $message; } else { echo "Failed"; } socket_close($socket); ?>
Понял !,
Нам нужно добавить $message = "Apple\n";
вместо $message = 'Apple\n';
Попытайтесь добавить конец строки в сообщение.
$message = 'Apple\n';
readLine всегда будет ждать конца строки.