Ich versuche, einen Chat-Server und Client, die über zwei separate Computer mit dem Internet verbunden kommunizieren können. Einer von ihnen ist mit WLAN verbunden und ein anderer ist über ein Modem. Hier ist mein Servercode.Kommunikation über zwei separate Computer mit Java-Sockets
GreetingServer.java
import java.net.*;
import java.io.*;
public class GreetingServer extends Thread
{
private ServerSocket serverSocket;
public GreetingServer(int port) throws IOException
{
serverSocket = new ServerSocket(port);
serverSocket.setSoTimeout(100000);
}
public void run()
{
while(true)
{
try
{
System.out.println("Waiting for client on port " +
serverSocket.getLocalPort() + "...");
Socket server = serverSocket.accept();
System.out.println("Just connected to "
+ server.getRemoteSocketAddress());
DataInputStream in =
new DataInputStream(server.getInputStream());
System.out.println(in.readUTF());
DataOutputStream out =
new DataOutputStream(server.getOutputStream());
out.writeUTF("Thank you for connecting to "
+ server.getLocalSocketAddress() + "\nGoodbye!");
server.close();
}catch(SocketTimeoutException s)
{
System.out.println("Socket timed out!");
break;
}catch(IOException e)
{
e.printStackTrace();
break;
}
}
}
public static void main(String [] args)
{
int port = Integer.parseInt("6066");
try
{
Thread t = new GreetingServer(port);
t.start();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
GreetingClient.java
import java.net.*;
import java.io.*;
public class GreetingClient2
{
public static void main(String [] args)
{
String serverName = "10.2.3.100";
int port = Integer.parseInt("6066");
try
{
System.out.println("Connecting to " + serverName +
" on port " + port);
Socket client = new Socket(serverName, port);
System.out.println("Just connected to "
+ client.getRemoteSocketAddress());
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
out.writeUTF("Hello from "
+ client.getLocalSocketAddress());
InputStream inFromServer = client.getInputStream();
DataInputStream in =
new DataInputStream(inFromServer);
System.out.println("Server says " + in.readUTF());
client.close();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
Die IP-Adresse im Code-Client ist der Computer, auf dem der Server von InetAddress.getLocalHost erworben läuft(). GetHostAddress() . Wenn ich den Server starte, wartet er auf den Client. Und wenn ich den Client-Code von einem anderen Computer aus ausführen, wird keine Verbindung hergestellt. Ist es möglich, so über Sockets in Java zu kommunizieren?
Wenn beide im selben Netzwerk sind, oder wenn ein Netzwerk zu einem anderen geroutet wird, denke ich so – Leo
'String serverName =" 10.2.3.100 "; Könnten Sie bitte einen' ifconfig'-Eingang angeben? – MedAl
Ich denke, der Server-Computer hat eine deaktivierte Firewall auf dem Port 6066? – sanastasiadis