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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 魏亮 中级黑马   /  2012-10-29 17:55  /  1377 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.net.*;
import java.io.*;
class  ServerDemo
{
        public static void main(String[] args) throws Exception
        {
                ServerSocket ss = new ServerSocket(11111);

                Socket s = ss.accept();
                /*
                String ip = s.getInetAddress().getHostAddress();
                System.out.println(ip+"...connected");

                BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
               
                String line = null;
                while ((line = bufIn.readLine())!=null)
                {
                        System.out.println(line);
                }


                为什么不行?? 客户端发来的请求数据头后面不是有空行吗?应该可以读到null,然后结束循环的,怎么用这个试了好几遍都不行
                */
                System.out.println(s.getInetAddress().getHostAddress());

                InputStream in = s.getInputStream();

                byte[] buf = new byte[1024];

                int len = in.read(buf);

                System.out.println(new String(buf,0,len));
                //用字节流虽然不是每次都成功,但是可以成功
               

                 PrintWriter out = new PrintWriter(s.getOutputStream(),true);
                out.println("你好,客户端");
                s.close();
                ss.close();
               
                //System.out.println("Hello World!");
        }
}


评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

2 个回复

倒序浏览
你用字节流是因为你只读了1024个字节,如果等效为字符流应是如下:
int len =0;
                      while((len = in.read(buf))!=-1){
                              System.out.println(new String(buf,0,len));
                      }
这样就好出现阻塞了
回复 使用道具 举报
问题不在字节流,我感觉数据头信息不多就没写循环,主要是在字符流,dos里接收到了请求端 数据头,就停住了,光标闪烁。。。是不是字符流没读到结束标记???
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马