关于java网络编程的简单问题 20

我又这样的一个服务端程序ServerSocketserverSocket=newServerSocket(30000);System.out.println("serve... 我又这样的一个服务端程序
ServerSocket serverSocket = new ServerSocket(30000);
System.out.println("server is ok.");
while(true){
Socket socket = serverSocket.accept();
DataInputStream din = new DataInputStream(socket.getInputStream());
DataOutputStream dout = new DataOutputStream(socket.getOutputStream());

byte line[] = new byte[256];
int t;
while((t = din.read()) != -1){
if(t != -1){
System.out.print((char)t);
}else{
break;
}
}
System.out.println("end");
}
我是用 IE浏览器访问我的服务器。服务器读字符串。
但是每当读到最后的是时候就会停下来。
不执行“System.out.println("end");”
这段代码。请问是怎么回事?
还是 堵塞!!!
急啊
展开
 我来答
horiway
2009-07-02 · TA获得超过510个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:105万
展开全部
ie 并不会送出结束符的,所以while循环不会中止
而firefox中如果你选择停止,浏览器是可以送出中止符,程序可以正常打印出end.
用缓冲区读数据,把循环体改为:
while ((t = din.read(line)) != -1) {
if (t != -1) {
//System.out.print((char) t);
System.out.print(new String(line));
} else {
break;
}
}
a30501139
2009-07-02 · TA获得超过172个赞
知道小有建树答主
回答量:523
采纳率:0%
帮助的人:253万
展开全部
while((t = din.read()) != -1){
if(t != -1){
System.out.print((char)t);
}else{
break;
}
}
我个人估计程序在这里已经在做死循环了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hight1234
2009-07-02 · TA获得超过161个赞
知道答主
回答量:277
采纳率:0%
帮助的人:177万
展开全部
read 是个阻塞操作! 你说对了!
用线程解决!把 while 那块放到线程了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式