java.net.SocketException: Bad address: connect错误啥原因?

qq_21600847 2015-01-11 11:48:18
java网络编程学习中,简单的做了一本本地C/S,服务器已启动且用telnet 128.0.0.1 8000(端口号)连接测试全部正常,但在客户端程序中Socket s=new Socket("127.0.0.1",8000)时报了上述的错。程序直接拿到同事的机器上测试都没问题。我的开发工具用的是myeclipse 8.0+JDK 1.7,同事则是eclipse+JDK1.6,有谁遇到过相同问题吗,是有什么地方需要特殊设置吗?
...全文
1857 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tubertan 2015-10-19
  • 打赏
  • 举报
回复
引用 7 楼 zxs6587 的回复:
代码没错!在机器上跑了一遍没出错! 你是telnet测试过又用客户端连的吗? 把127.0.0.1直接改成localhost试试!
请问问题解决了吗?
qq_21600847 2015-01-16
  • 打赏
  • 举报
回复
localhost也是一样,所以我一直是怀疑操作系统、JDK或者是myeclipse有什么地方需要设置一下
Runner6587 2015-01-16
  • 打赏
  • 举报
回复
代码没错!在机器上跑了一遍没出错! 你是telnet测试过又用客户端连的吗? 把127.0.0.1直接改成localhost试试!
qq_21600847 2015-01-15
  • 打赏
  • 举报
回复
Server端代码: package echoserver; import java.net.*; import java.io.*; public class EchoServer { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub EchoServer msl=new EchoServer(); } public EchoServer() { try { //在8000号端口监听 ServerSocket ss=new ServerSocket(8000); System.out.println("我是服务器,正在8000端口监听"); //等待客户端连接,该函数会返回一个Scokey连接 ss.setReuseAddress(false); Socket s=ss.accept(); s.setSoTimeout(60000); //要读取s中传递的数据 InputStreamReader isr=new InputStreamReader(s.getInputStream()); BufferedReader br=new BufferedReader (isr); //行读取 String info=br.readLine(); System.out.println("服务器已经收到,"+info); PrintWriter pw=new PrintWriter(s.getOutputStream(), true); pw.println("我是服务器,收到请回答"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } 服务器端启动后一切正常,telnet测试也没有问题。 客户端的程序如下: package echoclient; //最简单的一个网络通讯示例程序,还未涉及多线程 import java.net.*; import java.io.*; public class EchoClient { Socket s; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // EchoClient mcl=new EchoClient(); tests(); } public static void tests(){ try { Socket ss=new Socket("127.0.0.1", 8000); boolean is=ss.isConnected(); System.out.println("the connect is connet flag "+is); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public EchoClient() { try { //Socket,就是连接某个服务器端,127.0.0.1表示服务器的Ip 8000表示端口号 //Socket s=new Socket("127.0.0.1", 8000); System.out.println(InetAddress.getLocalHost()); s=new Socket(); InetSocketAddress sis=new InetSocketAddress("0.0.0.0",8000); s.connect(sis); //如果s连接成功, 就可以发数据给服务器 //我们通过pw 向s写数据 true表示刷新流 PrintWriter pw=new PrintWriter(s.getOutputStream(),true); pw.println("你好吗?我是客户端"); InputStreamReader isr=new InputStreamReader(s.getInputStream()); BufferedReader br=new BufferedReader (isr); //行读取 String response=br.readLine(); System.out.println("客户端已经收到,"+response); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { try { s.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } 不论是执行tests还是new EchoClient(),都是相同的错误java.net.SocketException: Bad address: connect,换了构造方式Socket的几个构造方法,都一样,到connect时都报相同的错。 hosts文件中,127.0.0.1这行加#不加#都试过了。 # localhost name resolution is handled within DNS itself. 127.0.0.1 localhost # ::1 localhost
可乐罐 2015-01-14
  • 打赏
  • 举报
回复
HOST文件里设置修改过127这个IP了吧?
Runner6587 2015-01-13
  • 打赏
  • 举报
回复
代码发上来看看??
chiweitree 2015-01-13
  • 打赏
  • 举报
回复
不用看源码,错误原因很明显了,就是地址错误,请楼主仔细一点吧!!!
  • 打赏
  • 举报
回复
128.0.0.1 8000?
qq_21600847 2015-01-11
  • 打赏
  • 举报
回复
笔误,应为telnet 127.0.0.1 8000

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧