我是java中UDP编程的新手。我有一本书,里面包含了java中发送方和接收方的代码。当我制作jar并从cmd运行时,代码运行得很好。
问题是,当我被要求制作一个php来运行.jar时,接收器无法接收到任何东西。。接收器只有在使用cmd时才能工作。发送器很好,因为它已经可以使用cmd或php发送
接收器代码:
package packetreceiver;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class Packetreceiver {
public static void main(String[] args) {
int z = 0;
while (z<5){
try
{
DatagramSocket socket = new DatagramSocket(2000);
DatagramPacket packet = new DatagramPacket(new byte[256], 256);
socket.receive(packet);
System.out.println("Binding to local port 2000");
System.out.println("Bound to local port " + socket.getLocalPort());
System.out.println("Packet received!");
InetAddress remote_addr = packet.getAddress();
System.out.println("Sent by : " + remote_addr.getHostAddress());
System.out.println("Sent from: " + packet.getPort());
ByteArrayInputStream bin = new ByteArrayInputStream(packet.getData());
for (int i = 0; i < packet.getLength(); i++)
{
int data = bin.read();
if (data == -1) {
break;
}
System.out.print((char)data);
}
socket.close();
System.out.println();
}
catch (IOException ioe)
{
System.err.println("Error - " + ioe);
}
z++;
}
}
}
php:
<?php
exec("java -Xmx1g -jar packetreceiver.jar",$output);
foreach($output as $value) {
echo $value;
echo "</br>";
};
?>
请帮帮我,谢谢
您的问题在PHP方面。您的exec失败,但由于您不处理错误,因此您不知道这一点。PHP在这里找东西有问题,所以你可以尝试使用路径。例如,以下是一些理论Test.class文件的外观:
exec("'"c:/Program Files/Java/jdk1.7.0_25/bin/java.exe'" -cp c:/php Test", $output, $ret);
if ( $ret == 0 )
{
echo "operation failed'n";
exit(1);
}
foreach($output as $line)
{
echo $line;
}