关于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();
}
}
}
----------------解决方案--------------------------------------------------------
因为你发送端只是flush而已,并且没有关闭
如果你发送端调用一下close,那么接收端就不会死在那里了,但是会收到一个异常,这个异常你自己应该处理
----------------解决方案--------------------------------------------------------
但是我不想用CLOSE这个方法 因为 我后面还要用的这个SOCKET。 如果关闭了这个流 它会把socket一起关掉
有没有什么好的办法能两全其美
----------------解决方案--------------------------------------------------------
可以约定一个特殊的字符串代表结束,比如"exit",
当读到exit的时候就break循环.
----------------解决方案--------------------------------------------------------
这样啊 是乎 有点不太好啊,
我是想封装一个接受方法 以后谁要是发送消息 我就调用这个方法就能接受了。不一定发送的消息都会以EXIT结尾啊
----------------解决方案--------------------------------------------------------
我这种要求是不是有些牵强啊
脑子太笨了。思想不太好!
大家指点指点啊
----------------解决方案--------------------------------------------------------