本帖最后由 马睿 于 2012-9-19 21:54 编辑
- ServerSocket server = new ServerSocket(11000);
- while(true)
- {
- Socket client = server.accept();
- sop(client.getInetAddress().getHostAddress());
-
- /*获得请求信息*/
- InputStream inputStream_client = client.getInputStream();
- BufferedInputStream buff = new BufferedInputStream(inputStream_client);
- int len = buff.available(); /*问题发生在这里,获得长度为0*/
- System.out.println("server:" + len);
- byte b[] = new byte[1024]; /*问题发生的相关数组*/
- /*这里调用buffer.read(b)也一样*/
- inputStream_client.read(b);
- System.out.println(new String(b));
- /*输出欢迎信息*/
- PrintStream outputStream = new PrintStream(client.getOutputStream(),true);
- outputStream.println("你好客户端");
- client.close();
- }
复制代码 输出结果
server:192.168.3.101
server:0
GET /myweb/dex.html HTTP/1.1
Host: 192.168.3.101:11000
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
好的问题来了
我这里定义了一个BufferedInputStream ,装入了客户端发送过来的数据流
我想用buff.available()方法获得输入流的长度,结果得到的确是0为什么呢???????
available()
返回可以从此输入流读取(或跳过)、且不受此输入流接下来的方法调用阻塞的估计字节数。
本来我想给一会用来读出数据的数组定义一个可变的长度len,但是这样为0的话就无法实现了
此外,既然这个流的长度是0了,那么,为什么我去read(b)的时候,还能读到东西呢????
蛋疼了。。。。难道只能定义一个足够大的数组去读么?
额外补充:
int len = buff.available(); /*问题发生在这里,获得长度为0*/
我在这个位置如果设置断点
然后我再打开网页,去打开地址http://192.168.3.101:11000/myweb/dex.html
在断点debug模式下,却能读到长度……………………什么情况。。。?正常运行读不到?
|