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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Teale 中级黑马   /  2014-3-13 15:23  /  1234 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package 网络编程;
import java.net.*;
import java.io.*;
public class 浏览器客户端 {
        public static void main(String[] args) throws Exception{
                ServerSocket ss=new ServerSocket(10010);
                Socket s=ss.accept();
                System.out.println(s.getInetAddress().getHostAddress());
                PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
                pw.write("欢迎光临");
                BufferedReader bufin=new BufferedReader(new InputStreamReader(s.getInputStream()));
                byte[] buf=new byte[1024];
                String line=null;
                while((line=bufin.readLine())!=null){
                        System.out.println(line);
                }
                bufin.close();
                s.close();
                ss.close();
        }
}


奇怪的是这个服务端可以接收到客户端传来的信息。但是 另外那一段收不到“欢迎光临”。同样的代码,毕老师用浏览器就可以接收。

这是服务端
package 网络编程;
import java.io.*;
import java.net.*;
public class 测试 {
        public static void main(String[] args){
                String urlPath="http://127.0.0.1:10010";
                try{
                URL url=new URL(urlPath);
                URLConnection conn=url.openConnection();
                InputStream in=conn.getInputStream();
                byte[] buf=new byte[1024];
                int len=0;
                while((len=in.read(buf))!=-1){
                        System.out.println("2222222");  //该用来测试,结果也不输出,就没有输入流进来
                        System.out.println(new String(buf,0,len));
                }
                }catch(Exception ex){
                        System.out.println("URL不正确");
                }
       
        }
}

最终服务端打印:
127.0.0.1
GET / HTTP/1.1
User-Agent: Java/1.7.0_15
Host: 127.0.0.1:10010
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
客户端什么都没有。

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

3 个回复

正序浏览
chen_x 发表于 2014-3-13 16:36
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
虽然创建了pw为自动刷新,但是PrintWriter类 ...

啊啊啊!! 恍然大悟!!!
回复 使用道具 举报
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
虽然创建了pw为自动刷新,但是PrintWriter类的自动刷新只是针对该类的println、printf、format 3个方法,只有调用这3个方法往对象里写数据时,缓冲区才会自动刷新,调用write方法时缓冲区不会自动刷新;

将上面的pw.write("欢迎光临")改成pw.println("欢迎光临")就行,或者还是用write方法 ,手动再flush刷新一下也行。
客户端收到的信息是:2222222
                              欢迎光临

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
名字打错了, 第一个是服务器,我在客户端那个文件里写的。第二个是客户端。。不要看错了 囧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马