将Chars写入Java套接字时出现fsockopen 10053错误

对,

我正在尝试用PHP编写一个wee脚本,它将向Minecraft发送一个游戏聊天包。

//Deliberately low timeout $mc = fsockopen("localhost", 25565, $errno, $err, 3); 

现在,如果连接成功,那么我发送2个“数据包”。

一个字节,其中包含整数3,告诉Minecraft它应该像Packet3Chat“数据包”一样处理传入的网络流量:

 fwrite( $mc, strrev( pack( "C", 3 ) ) ); 

这看起来像A-OK **。

需要的第二个“数据包”是字符串的长度作为有符号的短 。

 $my_string = "Hello World!"; //119 character limit on Minecraft chat messages $processed_string = substr($my_string, 0, 119); fwrite($mc, strrev( pack( "s", strlen( $processed_string ) ) ) ); 

而且这似乎也可以正常工作**。

而现在剩下要做的就是发送实际的字符串, 就像字符一样 。

我尝试使用str_split拆分字符串并使用两者自己发送每个字符:

 //Signed char fwrite($mc, strrev( pack( "c", $character ) ) ); 

 //Unsigned char fwrite($mc, strrev( pack( "C", $character ) ) ); 

而且我也试过通过这些方法发送整个字符串而不将其拆分,但是我无法成功打印出readChar()收到的字符( System.out.println只打印一个空行),并且在发送字符期间的某个时刻我得到一个fwrite错误10053 – 即readChar()抛出一个EOFException

我在Windows 7上运行修改后的Minecraft服务器,我在同一台机器上使用XAMPP运行PHP 5.x.

任何想法为什么连接将“由软件关闭”? 为什么它只在发送字符/字符串期间关闭而不是在发送字节/短字期间关闭?


**是的我使用了System.out.println来validationMinecraft收到的数据。

10053是WSAECONNABORTED的winsock错误代码。
可以在http://www.chilkatsoft.com/p/p_299.asp找到该错误情况的“可理解的”解释

尝试插件HTTPConsole和

并使用这样的函数来执行命令:

 function exec_shell_command($command) { $command = urlencode($command); $url = "http://127.0.0.1:25560/console?command=$command"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $out = curl_exec($ch); curl_close($ch); return $out; } $retval = exec_shell_command("say this is a server message"); 

当您说“发送聊天消息”时,我不确定这是否正在执行您想要的操作,这会将控制台消息发布到服务器。

Interesting Posts