创建简单的互联网聊天

时间:2013-07-12 17:00:36

标签: java network-programming

我尝试通过套接字创建一个简单的聊天,它现在适用于局域网和“localhost”,当然,但不是通过互联网在不同的计算机之间,这就是聊天的真正意义,不是吗!

socket = new Socket("--ip address--", 7345);

这行适用于--ip address-- = localhost和--ip address-- =“”我的本地ip-address“”,但是使用我的路由器的ip地址,它会抛出一个java.net.ConnectException

" java.net.ConnectException: Connection refused: connect "

我想用我的电脑作为服务器,而不是真正的服务器,也许有问题,但我认为必须有一个解决方案。如果这是一个荒谬的简单问题,请不要让我失望,因为我是网络编程的真正新手。

1 个答案:

答案 0 :(得分:-1)

在创建服务器时,必须使用服务器套接字及其运行位置的IP地址...

服务器套接字需要在您机器的IP地址的计算机上运行。

使用路由器,您需要将连接转发到您托管服务器的端口上。

然后您应该能够从本地网络外部进行连接。

如果没有您正在进行的操作的代码,很难判断这是否是一个可以为您提供指导的简单聊天服务器。

import java.net.*;
import java.io.*;

public class ChatServer
{  private Socket          socket   = null;
   private ServerSocket    server   = null;
   private DataInputStream streamIn =  null;

   public ChatServer(int port)
   {  try
      {  
         System.out.println("Binding to port " + port + ", please wait  ...");
         server = new ServerSocket(port);  
         System.out.println("Server started: " + server);
         System.out.println("Waiting for a client ..."); 
         socket = server.accept();
         System.out.println("Client accepted: " + socket);
         open();
         boolean done = false;
         while (!done)
         {  try
            {  String line = streamIn.readUTF();
               System.out.println(line);
               done = line.equals(".bye");
            }
            catch(IOException ioe)
            {  
              done = true;
            }
         }
         close();
      }
      catch(IOException ioe)
      {  System.out.println(ioe); 
      }
  }
   public void open() throws IOException
   {  streamIn = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
   }
   public void close() throws IOException
  {  if (socket != null)    socket.close();
     if (streamIn != null)  streamIn.close();
  }
   public static void main(String args[])
   {  ChatServer server = null;
      if (args.length != 1)
         System.out.println("Usage: java ChatServer port");
      else
         server = new ChatServer(Integer.parseInt(args[0]));
   }
}