黑马程序员技术交流社区

标题: 还是网络编程的问题。。。 [打印本页]

作者: 魏亮    时间: 2012-10-29 17:55
标题: 还是网络编程的问题。。。
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!");
        }
}



作者: 李靖    时间: 2012-10-29 18:28
你用字节流是因为你只读了1024个字节,如果等效为字符流应是如下:
int len =0;
                      while((len = in.read(buf))!=-1){
                              System.out.println(new String(buf,0,len));
                      }
这样就好出现阻塞了
作者: 魏亮    时间: 2012-10-30 07:50
问题不在字节流,我感觉数据头信息不多就没写循环,主要是在字符流,dos里接收到了请求端 数据头,就停住了,光标闪烁。。。是不是字符流没读到结束标记???




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2