私はMinecraftプラグインを作成しようとしています。 ゲームで「/ start .....」と入力するとソケットサーバーを送り返して欲しいです。 私のコンピュータでMinecraftサーバーを実行すると完了しますが、他のサーバーでMinecraftサーバーを実行するとエラーが発生します。 ipをlocalhost
から私のipに変更しました。 私は常に自分のコンピュータでソケットサーバを実行します。エラーソケットMinecraftプラグイン
私のプラグインのコード:
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);}
}
そのサーバーがローカルネットワークにない場合、ローカルネットとインターネットとの間にあるルーターファイアウォールが、そのポート上の着信トラフィックをブロックする可能性があります。ローカルマシンを指すポート転送を作成する方法については、ルータのマニュアルを参照してください。 – fvu