私はクライアントからクライアントへの通信を設定しようとしていますが、何か問題があります。Java - GUIによるクライアントとクライアントの通信。返信メッセージの問題
現在、私はサーバーと他のクライアントとして1つの動作をしていますが、サーバーにGUIの簡単なテキストメッセージの形式でクライアントへの接続の確認を返すように苦労しています。
現在のところ、私のコードでは、クライアントが簡単なhelloメッセージをサーバに送信して動作します。コメントアウトされたコードは、クライアントに接続確認メッセージを返す最近の試みですが、機能しません。ここで
は、サーバーコードである:ここで
JMenuItem SeederItem = new JMenuItem("Seeder mode");
SeederItem.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
// Seeder mode
try
{
// Waiting to be connected to
System.out.println("Seeder waiting for leecher..");
DatagramSocket SeederSocket = new DatagramSocket(2345);
byte[] SeederBuffer = new byte[512];
DatagramPacket DGP = new DatagramPacket(SeederBuffer,SeederBuffer.length);
// Receiving connection attempt
String message = "";
SeederSocket.receive(DGP);
message = new String(SeederBuffer);
System.out.println(message);
/*
// Response to connection attempt
String returnGreeting = "You have successfully connected to the seeder!";
SeederBuffer = returnGreeting.getBytes();
DatagramPacket DGPResponse = new DatagramPacket(SeederBuffer,SeederBuffer.length);
SeederSocket.send(DGPResponse);
*/
}
catch (SocketException e)
{
e.printStackTrace();
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
});
は、クライアントのコードです:
JButton btnConnect = new JButton("Connect to seeder");
btnConnect.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
try
{
// Attempting to connect
InetAddress MyAddress = InetAddress.getByName(txtHostAddress.getText());
DatagramSocket LeecherSocket = new DatagramSocket();
String Greeting = "Hello from the leecher";
byte[] LeecherBuffer = Greeting.getBytes();
DatagramPacket dp = new DatagramPacket(LeecherBuffer,LeecherBuffer.length,MyAddress,Integer.parseInt(txtPort.getText()));
LeecherSocket.send(dp);
System.out.println("Activation test");
//????
/*
// Receiving successful connection response
DatagramPacket DGPReceiveResponse = new DatagramPacket(LeecherBuffer,LeecherBuffer.length);
String message = "";
LeecherSocket.receive(DGPReceiveResponse);
message = new String(LeecherBuffer);
System.out.println(message);
*/
}
catch (UnknownHostException e1)
{
e1.printStackTrace();
}
catch (SocketException e1)
{
e1.printStackTrace();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
});
コメントアウトコードがコメント解除されている場合は、それもクライアントからクライアントのメッセージを送信するコードを破りますサーバーに転送します。また、この問題に言及し
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: null address || null buffer –
:あなたは、パケットがしようとしている場合にIPアドレスを提供する必要が
ClientFrame1$1.actionPerformed(ClientFrame1.java:83)
, which refers to this line:
SeederSocket.send(DGPResponse);
質問は何ですか? –
問題は既に解決されていますが、ありがとうございます。 – Impact