错误套接字Minecraft插件

时间:2016-04-23 09:58:57

标签: java sockets plugins minecraft

我正在尝试制作一个Minecraft插件。 当我在游戏中键入“/ start .....”时,我希望它能回送套接字服务器。 它在我的计算机中运行Minecraft服务器时完成,但是当我在其他地方运行Minecraft服务器时出错。 我将ip从localhost更改为我的ip。 我总是在我的电脑上运行套接字服务器。

我的插件代码:

package Me.Package.Tauhoo;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

/**
 *
 * @author ice
 */
public class Client extends JavaPlugin{

    @Override
    public void onEnable(){ 
        getServer().getLogger().info("Plugin are working");
        registerEvent();
    }
    @Override
    public boolean onCommand(CommandSender sender,Command cmd,String label,String[] args){
        if(cmd.getName().equalsIgnoreCase("start") && sender instanceof Player){
            Socket Sock = null;
            sender.sendMessage("start");
            try{
                Sock = new Socket("180.183.41.15",50000);
            }catch(IOException e){
                getServer().getLogger().info("Error Creating Socket");
                System.exit(2);
            }
            OutputStreamWriter output = null;
            try{
                output = new OutputStreamWriter(Sock.getOutputStream());
                output.write(sender.getName()+": "+args[0]);
                output.close();
                Sock.close();
            }catch(IOException e){

                getServer().getLogger().info("Error send data");

            }
            try{
                if(output != null){
                    output.close();
                }
                if(Sock != null){
                    Sock.close();
                }
            }catch(IOException e){
                getServer().getLogger().info("Error close");

            }


            return true;
        }
        return false;
    }
    public void registerEvent(){
    getServer().getPluginManager().registerEvents(new onJoin(), this);}

}

结果

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为fvu提供的评论是正确的,因为如果它在局域网中正常运行但在另一个网络上运行,可能是防火墙,则必须打开正确的端口并允许所有流量通过该端口。