我写了一个C/S程序,客户端连接到服务器上,然后双方实现通信,但是为什么当客户端发送数据到服务器端后,客户端在等待服务器端发来的信息的时候总是提示socket已经关闭,我的客户端代码是:
client = new java.net.Socket( "127.0.0.1 ",1234);
java.io.OutputStream output = client.getOutputStream();
java.io.InputStream input = client.getInputStream();
java.io.BufferedWriter writer =
new java.io.BufferedWriter( new java.io.OutputStreamWriter(output));
writer.write( "eiieei ");
writer.flush();
writer.close();
java.io.BufferedReader reader = new java.io.BufferedReader(
new java.io.InputStreamReader(input));
String line = reader.readLine(); //这句话提示socket已经关闭
我跟踪代码查一下了发现当执行writer.clase()后,socket就已经关闭了,但是如果不写这句话服务器端无法得到客户端发来的最后一个字符。
该如何解决?
谢谢
------解决方案--------------------
BufferedReader读数据的时候,似乎有的问题,采用下面的方式
import java.io.*;
import java.net.*;
public class MyServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
Socket client=server.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println( "has receive.... ");
out.flush();
if(str.equals( "end "))
break;
}
client.close();
}
}