我尝试通过套接字创建一个简单的聊天,它现在适用于局域网和“localhost”,当然,但不是通过互联网在不同的计算机之间,这就是聊天的真正意义,不是吗!
socket = new Socket("--ip address--", 7345);
这行适用于--ip address-- = localhost和--ip address-- =“”我的本地ip-address“”,但是使用我的路由器的ip地址,它会抛出一个java.net.ConnectException
" java.net.ConnectException: Connection refused: connect "
我想用我的电脑作为服务器,而不是真正的服务器,也许有问题,但我认为必须有一个解决方案。如果这是一个荒谬的简单问题,请不要让我失望,因为我是网络编程的真正新手。
答案 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]));
}
}