import java.net.*;
import java.io.*;
public class Server {
private static final int SERVER_PORT = 9000;  //指定侦听端口
public Server(){
try {
//创建监听器,监听端口
ServerSocket server=new ServerSocket(SERVER_PORT);
System.out.println("监听中");
//创建套接字,建立输入输出流
Socket s=server.accept();
//接受消息
InputStream in=s.getInputStream();//读取发送过来的数据
BufferedReader br=new BufferedReader(new InputStreamReader(in));
System.out.println("aaaaaaaaaaaaaaaaaaa");
System.out.println("服务器接收消息:"+br.readLine());//调试的时候这里不能读取
OutputStream out=s.getOutputStream();//发送数据
PrintWriter pw=new PrintWriter(out,true);
pw.write("服务器发送:消息已经收到");
in.close();
out.close();
br.close();
pw.close();
s.close();
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String []args)
{
  new Server();
}
}
//客户端类--------
import java.net.*;
import java.io.*;
public class Client {
private final static int PORT=9000;
public Client(){
try {
Socket s=new Socket("hyh",PORT);
InputStream in=s.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(in));
OutputStream out=s.getOutputStream();
PrintWriter pw=new PrintWriter(out,true);
pw.write("客户端消息");
System.out.println("客户端接受消息"+br.readLine());//运行到这里也停止了
in.close();
out.close();
out.close();
br.close();
s.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Client();
}
}

解决方案 »

  1.   

    看看 有一个说代码排版的帖子,你的代码看着 不雅,读着难受:
    看工具栏,有一个#号的“选择java”,把代码粘贴到code之间!!!
      

  2.   

    通常在Socket s=server.accept(); 前会加一个while(true)的循环,循环体是一直到关闭socket之后。然后你服务器读取的方法也不是太规范。
    通常是用
     while( br.readLine()!=null) 的循环来读取输入流的
      

  3.   

    import java.io.*;
    import java.net.*;public class EchoServer {
    private int port = 1;
    private ServerSocket serverSocket;

    public EchoServer()throws IOException{
    serverSocket = new ServerSocket(port);
    System.out.println("服务器启动");
    }
    public String echo(String msg){
    return "echo:" + msg;
    }

    private PrintWriter getWriter(Socket socket)throws IOException{
    OutputStream socketOut = socket.getOutputStream();
    return new PrintWriter(socketOut,true);
    }
    private BufferedReader getReader(Socket socket)throws IOException{
    InputStream socketIn = socket.getInputStream();
    return new BufferedReader(new InputStreamReader(socketIn));
    }

    public void service(){
    while(true){
    Socket socket = null;
    try{
    socket = serverSocket.accept();
    System.out.println("New connection accepted"+socket.getInetAddress()+":"+socket.getPort());
    BufferedReader br = getReader(socket);
    PrintWriter pw = getWriter(socket);

    String msg =null;
    while((msg = br.readLine())!=null){
    System.out.println(msg);
    pw.print(echo(msg));

    BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
    String msg_2 = null;
    while((msg_2 = localReader.readLine())!=null){
    pw.println(msg_2);
    break;
    }
    if(msg.equals("bye")) break;
    }



    }catch(IOException e){
    e.printStackTrace();
    }finally{
    try{
    if(socket!=null)socket.close();
    }catch(IOException e){e.printStackTrace();}
    }
    }
    }
    public static void main(String args[])throws IOException{
    new EchoServer().service();
    }
    }
    这是一个典型的例子,参考书上找的
      

  4.   

    把Client中的pw.write()换成pw.println("客户端消息");
      

  5.   

    BufferedReader的readLine方法是阻塞式的...它读到"\r" 或者"\n"时才终止...