使用Java套接字编程的两个不同网络之间的通信

时间:2019-07-25 17:44:10

标签: java

我在笔记本电脑中编写了一个服务器端套接字程序[java程序],在我的朋友笔记本电脑中编写了一个客户端套接字程序。两者都连接到同一个wifi,并且可以正常工作,但是当我将服务器套接字的便携式计算机连接到我的移动数据网络时,却不能。

我尝试使用IP地址,该IP地址是在我们连接到网络时提供的,但它在客户端给了我一个错误。

服务器端代码

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

class Server Demo
{
public static void main(String args[])throws IOException
{
try 
{
int n=0;
ServerSocket ss=new ServerSocket(9999);
while(n!=1)
{
System.out.println("Waiting for Client!");
Socket sc=ss.accept();
BufferedReader in=new BufferedReader(new 
InputStreamReader(sc.getInputStream()));
PrintStream out=new PrintStream(sc.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s1=in.readLine();
System.out.println("From Client="+s1);
System.out.println("Enter the Message:");
String s2=br.readLine();
out.println(s2);
n=Integer.parseInt(br.readLine());
}
}
catch(Exception e1)
{
System.out.println(e1.getMessage());
}
}
}

客户端代码

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

public class CDemo
{
public static void main(String args[])throws IOException
 {
try
{
Socket cc=new Socket("192.168.0.103",9999);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
PrintStream out=new PrintStream(cc.getOutputStream(),true);
BufferedReaderin=newBufferedReader(new 
InputStreamReader(cc.getInputStream());
System.out.println("Enter the Message:");
String s=br.readLine();
out.println(s);
String s1=in.readLine();
System.out.println(s1);
out.println(1);
cc.close();
}
catch(Exception e1)
{
System.out.println(e1.getMessage());
}
}
}

1 个答案:

答案 0 :(得分:1)

如果我得到了您的问题:您正在尝试连接一个网络中的服务器端,而另一个网络中的客户端。但这是行不通的,因为双方看不到对方,这是因为程序不在同一IP地址范围内;他们需要与路由器保持在同一网络中,并提供彼此可见的IP地址。