socket,server端问题

sam172737 2013-03-04 12:04:19
Server端程序:
package com.test22;

import java.io.*;
import java.net.*;

public class Test06_server {
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(10000);
Socket s=ss.accept();
InputStream is=s.getInputStream();
byte[] buf=new byte[1024];
int len=0;
len=is.read(buf);
String str1=new String(buf,0,len);
System.out.println(str1);
// while((len=is.read(buf))!=-1){
// System.out.println();
// String str1=new String(buf,0,len);
// System.out.println(str1);
// }
OutputStream os=s.getOutputStream();
String str2="server send message";
os.write(str2.getBytes());
s.close();
ss.close();
}
}


Client端程序:
package com.test22;

import java.io.*;
import java.net.*;

public class Test06_client {
public static void main(String[] args) throws UnknownHostException,
IOException {
Socket s=new Socket("127.0.0.1", 10000);
OutputStream os=s.getOutputStream();
String str1="client send message";
os.write(str1.getBytes());
InputStream is=s.getInputStream();
byte[] buf=new byte[1024];
int len=0;
while((len=is.read(buf))!=-1){
String str2=new String(buf,0,len);
System.out.println(str2);
}
s.close();
}
}

我的问题是:我在server端,使用while()循环的代码来接收客户端的消息会出现阻塞的问题,我但是client端使用while()却没有问题,我想问下是什么原因啊?

求java高手回复
...全文
147 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbgaozhiwei 2013-03-04
  • 打赏
  • 举报
回复
同意楼上
wpnhwq2013 2013-03-04
  • 打赏
  • 举报
回复
取出数据后必须关闭流close
Candylibin 2013-03-04
  • 打赏
  • 举报
回复
Socket s=ss.accept(); accept本来就是阻塞式的方法啊,没有连接就会等。
  • 打赏
  • 举报
回复
用非阻塞的方式吧。看看java 的 NIO,现在都用这个
dracularking 2013-03-04
  • 打赏
  • 举报
回复
就是客户端这边实际上没有向服务端发送eof标志消息,试试client端发送完后close

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧