小编典典

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

java

对,

我正在尝试用PHP编写一个wee脚本,该脚本会将游戏内聊天程序包发送到Minecraft。

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

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

带有整数3的单个字节,用于告知Minecraft它应作为Packet3Chat“数据包”处理传入的网络流量:

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

这似乎可以正常运行**。

所需的第二个“数据包”是字符串的长度,为带符号的short

$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 ) ) ) );

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

现在剩下要做的就是发送实际的字符串,如chars

我尝试使用分割字符串,str_split并同时使用这两个字符单独发送每个字符:

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

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

而且我也尝试了通过发送这些方法的整个字符串而不破它,但我一直没能成功地打印出所收到的字符readChar()System.out.println只是打印一个空行),我得到一个
FWRITE错误10053 在在发送字符的某一点-即由EOFException抛出readChar()

我正在Windows 7上运行修改后的Minecraft服务器,并且在同一台计算机上使用XAMPP运行PHP5.x。

有什么想法为什么连接会被“软件关闭”?以及为什么它只在发送字符/字符串时而不在发送字节/短时关闭?


**是的,我曾经用来System.out.println验证Minecraft收到的数据。


阅读 202

收藏
2020-11-30

共1个答案

小编典典

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

2020-11-30