java中Socket通信问题:Socket通信是不是只能在局域网中用?
我在淄博运行服务器端的程序段:importjava.io.*;importjava.net.*;publicclassMain1{publicstaticvoidmain...
我在淄博运行服务器端的程序段:
import java.io.*;
import java.net.*;
public class Main1
{
public static void main(String args[])
{
try
{
ServerSocket ssk=new ServerSocket(1234);
while(true)
{
Socket sk=ssk.accept();
DataOutputStream dos=new DataOutputStream(sk.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
dos.writeUTF(str);
dos.close();
sk.close();
}
}
catch(IOException e){}
}
}
在济南运行客户端程序:
import java.io.*;
import java.net.*;
public class Main
{
public static void main(String args[])
{
try
{
while(true)
{
Socket sck=new Socket("192.168.209.1",1234);
DataInputStream dis=new DataInputStream(sck.getInputStream());
String str=dis.readUTF();
System.out.println(str);
}
}
catch(IOException e){}
}
}
结果客户端并没有连接到服务器端,求大神指点迷津~ 展开
import java.io.*;
import java.net.*;
public class Main1
{
public static void main(String args[])
{
try
{
ServerSocket ssk=new ServerSocket(1234);
while(true)
{
Socket sk=ssk.accept();
DataOutputStream dos=new DataOutputStream(sk.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
dos.writeUTF(str);
dos.close();
sk.close();
}
}
catch(IOException e){}
}
}
在济南运行客户端程序:
import java.io.*;
import java.net.*;
public class Main
{
public static void main(String args[])
{
try
{
while(true)
{
Socket sck=new Socket("192.168.209.1",1234);
DataInputStream dis=new DataInputStream(sck.getInputStream());
String str=dis.readUTF();
System.out.println(str);
}
}
catch(IOException e){}
}
}
结果客户端并没有连接到服务器端,求大神指点迷津~ 展开
4个回答
展开全部
如果服务器是单机上网 那你需要知道的是服务器在nternet网上的地址
服务器访问http://www.ip138.com/ 就看得出来 假设是58.100.15.199
那你修改192.168.209.1为 58.100.15.199 就可以了
如果服务器在局域网里 通过路由器上网的
那你是不能直接连接到局域网的服务器上的
那你得在路由器里设置端口映射 设置端口1234端口 映射到 192.168.209.1 1234端口
那样的话 然后同样方法获取到路由器在外网的IP 你socket连接这个路由器外网IP即可
实际上,很多上网时动态IP的,你可以安装花生壳之类的软件。获取动态IP
客户端解析花生壳域名就能得到服务器IP。很多路由器自带动态域名支持。
服务器访问http://www.ip138.com/ 就看得出来 假设是58.100.15.199
那你修改192.168.209.1为 58.100.15.199 就可以了
如果服务器在局域网里 通过路由器上网的
那你是不能直接连接到局域网的服务器上的
那你得在路由器里设置端口映射 设置端口1234端口 映射到 192.168.209.1 1234端口
那样的话 然后同样方法获取到路由器在外网的IP 你socket连接这个路由器外网IP即可
实际上,很多上网时动态IP的,你可以安装花生壳之类的软件。获取动态IP
客户端解析花生壳域名就能得到服务器IP。很多路由器自带动态域名支持。
展开全部
你使用的是局域网ip 就是说你只能和你一个路由器上的终端通信的时候才是使用这样的ip地址
查询一下你的电脑在广域网上的ip 直接用百度搜索"ip" 你就可以看到 这样你才可以正常通信 我也做过类似的东西 希望可以帮到你
查询一下你的电脑在广域网上的ip 直接用百度搜索"ip" 你就可以看到 这样你才可以正常通信 我也做过类似的东西 希望可以帮到你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果服务器是单机上网 那你需要知道的是服务器在nternet网上的地址
服务器访问http://www.ip138.com/ 就看得出来 假设是58.100.15.199
那你修改192.168.209.1为 58.100.15.199 就可以了如果服务器在局域网里 通过路由器上网的
那你是不能直接连接到局域网的服务器上的
那你得在路由器里设置端口映射 设置端口1234端口 映射到 192.168.209.1 1234端口
那样的话 然后同样方法获取到路由器在外网的IP 你socket连接这个路由器外网IP即可
实际上,很多上网时动态IP的,你可以安装花生壳之类的软件。获取动态IP客户端解析花生壳域名就能得到服务器IP。很多路由器自带动态域名支持。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"192.168.209.1"
192.168.*.*开头的IP是局域网IP,别说跨城市了,你去邻居家运行都搜不到!
192.168.*.*开头的IP是局域网IP,别说跨城市了,你去邻居家运行都搜不到!
追问
那么该怎么解决这个问题?求大神指教~
追答
服务器那个地方去掉路由器,直接连网线(有些社区宽带也不行,必须保证端口直接连接在网络运营商给你的网线上。如果你那边找不到网线主入口,那就死心吧)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询