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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 天下 中级黑马   /  2013-9-20 11:58  /  1589 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 天下 于 2013-9-23 19:18 编辑

在练习一小练习时,1,自定义一个服务端,并开启。

2,用浏览器当做客户端,输入ip和端口号访问
问题:1结果是浏览器根本访问不到数据,第二次,我开启网络,浏览器还是没有读到数据????
           2,我就奇了怪,为什么我每连接一次网络,显示的ip都不一样
  1. /*自定义tcp服务端*/
  2. import java.net.*;
  3. import java.io.*;
  4. class TcpServerSocket
  5. {
  6.           public static void main(String[] args)throws Exception
  7.           {
  8.                 ServerSocket ss=new ServerSocket(10010);
  9.                      Socket s=ss.accept();
  10.                
  11.                 System.out.println(s.getInetAddress().getHostAddress());
  12.                 PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
  13.                
  14.               pw.println("客户端,你好");
  15.                
  16.               s.close();
  17.               ss.close();
  18.           }
  19. }
复制代码
伤脑筋????????

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

9 个回复

倒序浏览
你用浏览器怎么访问的呢?
相当于是访问本机的服务器,应该不会出现多个IP的情况啊
回复 使用道具 举报
LZ用的什么浏览器,我也遇到过这个问题,大概原因可能是浏览的的请求数据必须要被read以后才能接收到返回数据,我用的chrome,其实你的代码和老师的代码唯一区别就是没有写inputstream流并且读入数据,可以试试我的办法就是。写一个inputstream流,并且read一下浏览器的请求数据,其他代码不用变。
回复 使用道具 举报
yxz 发表于 2013-9-20 14:28
LZ用的什么浏览器,我也遇到过这个问题,大概原因可能是浏览的的请求数据必须要被read以后才能接收到返回数 ...

没有用,IE浏览器。就是解决不了
回复 使用道具 举报
再次测试了一下。IE访问没问题。检查一下你的代码有什么不同


回复 使用道具 举报
本帖最后由 天下 于 2013-9-20 19:50 编辑
yxz 发表于 2013-9-20 17:53
再次测试了一下。IE访问没问题。检查一下你的代码有什么不同

哥们,我是要崩溃了,怎么到我这里就是不行呢?
1,第一种方式,我是把网络断开,开起服务端,再用360IE浏览器输入ip和端口,就是访问不到?

2,第二种方式:我将网络连接好,再开启服务端,再用360IE浏览器输入ip和端口号,在服务端显示已连接客户端(因为我加了System.out.println(s.getInetAddress().getHostAddress());)服务端就运行结束,可是看浏览器还是没有读到数据


这2中方式,结果在浏览器上都是:::网页无法访问

哥们如果不吝赐教的话。加我QQ2524998616,天下

代码语句我检查了,一模一样,没有问题
回复 使用道具 举报
楼主试下我帮你改的代码
把那个//ss.close();注释掉、、、

/*自定义tcp服务端*/
import java.net.*;
import java.io.*;

class TcpServerSocket {
        public static void main(String[] args) throws Exception {
                ServerSocket ss = new ServerSocket(12212);
               
                while(true){
                        Socket s = ss.accept();
       
                        System.out.println(s.getInetAddress().getHostAddress());
                        PrintWriter pw = new PrintWriter(s.getOutputStream());
                       
                        pw.write("hello client !!!");
                       
                        pw.close();
                        s.close();
                        //ss.close();
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

回复 使用道具 举报
记得注释//ss.close(); 跟 while(true){}
回复 使用道具 举报
天下 中级黑马 2013-9-22 09:01:13
9#
yting_xmei1129 发表于 2013-9-20 20:24
记得注释//ss.close(); 跟 while(true){}

哥们 ,谢了,搞定了。但是我有点小疑惑,System.out.println(s.getInetAddress().getHostAddress());这句为什么运行了4次或5次,在控制台显示,浏览器才访问到数据,

回复 使用道具 举报
第一,运行程序之前最好是把浏览器的缓存给删除掉
第二,你说的运行了4次或5次,在控制台显示,浏览器才访问到数据,我试了一下,打开 httpwatch监测了http一下,这个应该是你按F5,也就是刷新刷的太快的原因,饿刚刚也试了下,就是刷新太快了,数据还没完全传送过来,又被刷掉了、、、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马