我正在尝试从 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] 删除。
我来说两句