2014-02-13 56 views
-3

我想在java中创建一个聊天应用程序,但是当我无法发送到另一台机器时,我遇到了问题。 这里是我的代码部分:在java中的聊天应用程序

这是我的类客户:

public class EnvioSocket { 
    public static boolean enviarSocket(String nome, String ip, int porta, 
     String mensagem) { 
     String dados = nome + " : " + mensagem; 
     try { 
      Socket socket = new Socket(ip, porta); 
      OutputStream outToServer = socket.getOutputStream(); 
      DataOutputStream out = new DataOutputStream(outToServer); 
      out.writeUTF(dados); 
      out.close(); 
      socket.close(); 

     } catch (UnknownHostException e) { 
      JOptionPane.showMessageDialog(null, e.getMessage()); 
      return false; 
     } catch (IOException e) { 
      JOptionPane.showMessageDialog(null, e.getMessage()); 
      return false; 
     } 
     return true; 
    } 

}

这是我的类服务器:

public class ServidorThread implements Runnable { 
    private JTextArea menssage; 

    public ServidorThread(JTextArea menssage) { 
     this.menssage = menssage; 
    } 
    @Override 
    public void run() { 
     ServerSocket serverSocket = null; 
     try { 
      serverSocket = new ServerSocket(Porta.PORTA); 
      while (true) { 
       Socket acceptedSocket = serverSocket.accept(); 
       DataInputStream in = new DataInputStream(
        acceptedSocket.getInputStream()); 
       String menssage = in.readUTF(); 
       this.menssage.append(DateUtils.dateToString(new Date(), "dd/MM/yyyy HH:mm") + " " + menssage + "\n"); 
       in.close(); 
       acceptedSocket.close(); 
      } 
     } catch (IOException e) { 
     JOptionPane.showMessageDialog(null, e.getMessage()); 
     } 
    } 
} 



define a port to socket 
public final class Porta { 
    private Porta() { 
    } 

    public static final int PORTA = 6066; 
} 

我只能发信息给我自己的电脑。我怎样才能解决这个问题? 我开始我的课程,内部我的课程,使GUI。

+9

您应该首先删除所有与Swing相关的代码。您的问题与Swing无关,应该在调试时进行测试,以隔离分散注意力的非相关代码。此外,在真正的聊天应用程序中,用户界面代码将与套接字通信完全分离,所以现在不妨开始这样做。 –

+0

服务器似乎没有向任何人发送任何东西。它只接受连接,接收第一条消息并再次关闭套接字。 – Philipp

+3

现在,你的代码比大多数人想要阅读的要多得多。考虑将它降低到[SSCCE](http://www.sscce.org/),使我们更容易 –

回答

1

看起来您已将服务器设置为正确,但您的客户端似乎无法连接到它。您需要创建一个将连接到服务器套接字的套接字。这个套接字可以让你通过I/O流发送数据。

Java's tutorial, complete with code examples