0

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

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

此行适用于 --ip address-- = localhost 和 --ip address-- = ""my local ip-address"",但使用我的路由器的 ip 地址,它会抛出 java.net.ConnectException

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

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

4

1 回答 1

-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]));
   }
}
于 2013-07-12T17:10:57.660 回答