A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵燕燕 黑马帝   /  2011-12-7 01:04  /  3020 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵燕燕 于 2011-12-8 16:27 编辑

import java.net.*;
import java.io.*;
class TcpClient
{
        public static void main(String[] args)throws Exception
        {
                Socket s=new Socket("192.168.4.162",10100);
                OutputStream os=s.getOutputStream();
                os.write("I am from TCP client ".getBytes());
                s.close();
        }
}
编译时会出现下面的异常,该怎么解决?我的主机地址没有错。
Exception in thread "main" java.net.NoRouteToHostException: No route to host: connect

还有在命令行ping主机地址时,数据还会丢失,是怎么回事?

C:\Users\Administrator>ping 192.168.4.162

正在 Ping 192.168.4.162 具有 32 字节的数据:
来自 10.2.4.240 的回复: 无法访问目标主机。
来自 10.2.4.240 的回复: 无法访问目标主机。
请求超时。
请求超时。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

4 个回复

倒序浏览
试图将套接字连接到远程地址和端口时发生错误的情况下,抛出此异常。通常为无法到达远程主机,原因是防火墙干扰或者中间路由器停机。
ping 不通,显然是无法连接。再一个是是检测端口是否有问题。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
建议楼主首先检查所要连接的IP地址是否正确, 另外要注意的是服务器的端口是要先开着的,即要先运行服务器端的代码,如下所示:
ServerSocket ss = new ServerSocket(10100);
Socket s = ss.accept();
回复 使用道具 举报
1.防火墙设置可能阻挡此类程序访问网络
2.可能那个端口被屏蔽了
3:用127.0.0.1地址试一下
回复 使用道具 举报
谢谢大家的回答,找到原因了。我使用的是无线网,应该使用动态获取的ip地址,而我使用的是本地连接的地址。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马