当前位置: 代码迷 >> Java相关 >> 关于readLine有些不懂 请教
  详细解决方案

关于readLine有些不懂 请教

热度:133   发布时间:2007-06-04 14:55:02.0
关于readLine有些不懂 请教
客户端以此方法发送字符串
假设str为如下:
str="我是一个中国人!\n";
public boolean send(String str){

try {
socket = new Socket("localhost",8888);
out = new PrintWriter(socket.getOutputStream());
out.write(str);
out.flush();
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}

服务端
public void receive(ServerSocket serversocket){
System.out.println("=====begin receive====");
while(true){
try {
socket = serversocket.accept();
System.out.println("=====geted socket====");
new Thread(new Runnable(){
public void run() {
System.out.println("=====begin Thread====");
try {
StringBuffer Message = new StringBuffer();
read = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String temp = read.readLine();
while(temp!=null){
Message.append(temp);
temp=read.readLine();
}
程序似乎会死在这,它总是认为没有到文件的末尾,怎么办啊
System.out.println("====Server Recevie======"+Message);
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
搜索更多相关的解决方案: readLine  中国人  str  socket  

----------------解决方案--------------------------------------------------------
因为你发送端只是flush而已,并且没有关闭

如果你发送端调用一下close,那么接收端就不会死在那里了,但是会收到一个异常,这个异常你自己应该处理
----------------解决方案--------------------------------------------------------

但是我不想用CLOSE这个方法 因为 我后面还要用的这个SOCKET。 如果关闭了这个流 它会把socket一起关掉
有没有什么好的办法能两全其美


----------------解决方案--------------------------------------------------------
可以约定一个特殊的字符串代表结束,比如"exit",
当读到exit的时候就break循环.
----------------解决方案--------------------------------------------------------
这样啊 是乎 有点不太好啊,
我是想封装一个接受方法 以后谁要是发送消息 我就调用这个方法就能接受了。不一定发送的消息都会以EXIT结尾啊
----------------解决方案--------------------------------------------------------
我这种要求是不是有些牵强啊

脑子太笨了。思想不太好!

大家指点指点啊
----------------解决方案--------------------------------------------------------
  相关解决方案