2017-10-13 17 views
-2

私はUDPを使用してクライアントとサーバーのチャットプログラムを作成しようとしています。私はTCPを使って同様のプログラムを作るチュートリアルに続き、私の知識をUDPを使って同様の方法で作るように翻訳しようとしました。UDPチャットJavaで

エラーを表示せずに実行するクライアントとサーバー側を完了しましたが、実行していないと、他のメッセージまたはメッセージを受信すると誰かが私に間違っていることが分かりますか?メッセージを送信するための

サーバー側:

try{ 
     //creates the packet to be sent 
     byte[] buf = new byte[256]; 
     String msgout = serverText.getText().trim(); 
     buf = msgout.getBytes(); 

     //uses the socet.receive method to get the packet to retrieve information to send 
     DatagramPacket packet = new DatagramPacket(buf, buf.length); 
     ss.receive(packet); 
     InetAddress address = packet.getAddress(); 
     int port = packet.getPort(); 

     //uses packet information to create and send packet 
     DatagramPacket packetSend = new DatagramPacket(buf, buf.length, address, port); 
     ss.send(packetSend); 

     //Displays the message in the chat area and clears the text area 
     serverArea.setText(serverArea.getText().trim()+"\n Server: "+msgout); 
     serverText.setText(""); 

    }catch (Exception e){ 

    } 

して、ソケットを設定し、印刷/受信するための主な:ここで

String msgin = ""; 
    try{ 

     ss = new DatagramSocket(1420); // Sets socket at 1420 
     byte[] buf = new byte[256]; 
     DatagramPacket packet = new DatagramPacket(buf, buf.length); 
     ss.receive(packet); //Receives the packet from the socket 


     //Converts the byte array into a string 
     String clientMsg = new String(packet.getData(), 0, packet.getLength()); 

     while(!msgin.equals("exit")){ 
      //Displays the message 
      msgin = clientMsg; 
      serverArea.setText(serverArea.getText().trim()+"\n Client: "+msgin); //displays client message 

     } 

    }catch(Exception e){ 

    } 

が病気にその送信を組み合わせて、受信、クライアント側のコードですブロックを1ブロックにする:

try{ 
     //Creates the message out using the known socket that the Server creates and the known local address 
     String msgout = clientText.getText().trim(); 
     sendBuf = msgout.getBytes(); 
     InetAddress address = InetAddress.getLocalHost(); 
     DatagramPacket sp = new DatagramPacket(sendBuf, sendBuf.length, address, 1420); 
     s.send(sp); 

     //Displays the text and clears the text field 
     clientchat.setText(clientchat.getText().trim()+"\n Server: "+msgout); 
     clientText.setText(""); 


    }catch (Exception e){ 

    } 
String msgin = ""; 

    try{ 
     //Creates a socket 
     DatagramSocket s = new DatagramSocket(); 

     //Receives the message from the server 
     byte[] buf = new byte[256]; 
     DatagramPacket rp = new DatagramPacket(buf, buf.length); 
     s.receive(rp); 

     //Converts byte array to message 
     String clientMsg = new String(rp.getData(), 0, rp.getLength()); 

     while(!msgin.equals("exit")){ 
      //Displays the message 
      msgin = clientMsg; 
      clientchat.setText(clientchat.getText().trim()+"\n Server: "+msgin); //displays client message 

     } 


    }catch (Exception e){ 

    } 

何か助けとヒントをいただければ幸いです。

+1

空のキャッチブロックがある場合は、もちろんエラーは表示されません。 – Kayaman

答えて

0

何も起こっておらず、メッセージを送受信できない場合は、例外が発生している可能性があります。

しかし、すべての例外をキャッチして何もしないtry-catchブロックがあるため、例外がスローされた場合は何も投げられません。

単に例外を無視するのではなく、少なくとも原因を表示する必要があります。

catchステートメントで、次の行を追加すると、より簡単にデバッグできるようになります。

e.printStackTrace(); 
+0

残念ながら、これは私のプログラムには何もしておらず、それでも何もしません。私は思っているだけで、新しいものから始めようとしています。 – MDSasquatch

関連する問題