PHP socket_write 不起作用

康纳达森

我正在尝试从 PHP 脚本向 Java 服务器发送一条简单的消息,并且在我尝试在 PHP 上使用 socket_write 之前,一切都很好地相互连接。如果我尝试,整个脚本将停止工作,应该在 socket_write 之前发生的事情。这是我的代码:

PHP:

set_time_limit(0);
ob_implicit_flush();

$address = "localhost";
$port = 9999;


if(($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
    echo "Failed creating socket: " . socket_strerror(socket_last_error()) . "\n";
} else {
    echo "Socket created" . "\n";
}

if ($result = socket_connect($socket, $address, $port) === false) {
    echo "\nFailed connecting to server: " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
    echo "Connected" . "\n";
}

$msg = "message"

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

?>

爪哇:

public class Server {

    private static ServerSocket server;
    private static Socket connection;
    private static InputStream input;
    private static BufferedReader br;
    private static String message;

    public static void main(String[] args) {
        Server();
    }

    public static void Server() {
            try {
                server = new ServerSocket(9999, 100);
                log("Socket created");
            } catch (IOException e) {
                log("Error creating ServerSocket: " + e.getMessage());
            }

            while(true) {
                try {
                    log("Waiting for connections...");
                    connection = server.accept();
                    log("Connection accepted");
                } catch (IOException e) {
                    log("Error creating connection: " + e.getMessage());
                }


                try {
                    log("Setting inputStream..");
                    input = connection.getInputStream();
                    log("Connections setup");
                } catch (IOException e) {
                    log("Error creating input stream: " + e.getMessage());
                }

                br = new BufferedReader(new InputStreamReader(input));

                try {
                    if((message = br.readLine()) != null) {
                        log(message);
                    }
                } catch (IOException e) {
                    log("Error reading input: " + e.getMessage());
                }
            }







    }

    public static void log(String message) {
        System.out.println(message);
    }

}

当 socket_write 被注释时,来自 PHP 脚本的页面显示:

Socket created

Connected

并且 java 日志显示了这一点:

Socket created
Waiting for connections...
Connection accepted
Setting inputStream..
Connections setup
Waiting for connections...

这是有道理的,因为没有要读取的消息,因此它等待另一个连接。

但是 socket_write 没有注释,Java 日志显示“等待连接”并且 PHP 页面是空白的,这意味着它没有执行任何脚本。那么我做错了什么?

它发生了

你最后忘记了一个括号:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章