当前位置: 代码迷 >> J2SE >> 请问一个服务器端和客户端连接的有关问题,谢谢
  详细解决方案

请问一个服务器端和客户端连接的有关问题,谢谢

热度:5251   发布时间:2013-02-25 00:00:00.0
请教一个服务器端和客户端连接的问题,多谢!
服务器端代码:
Java code
import java.net.* ;import java.io.* ;public class EchoServer{    public static void main(String args[]) throws Exception {    // 所有异常抛出        ServerSocket server = null ;        // 定义ServerSocket类        Socket client = null ;    // 表示客 户端        BufferedReader buf = null ;    // 接收输入流        PrintStream out = null ;        // 打印流输出最方便        server = new ServerSocket(8888) ;    // 服务器在8888端口上监听        boolean f = true ;    // 定义个标记位        while(f){            System.out.println("服务器运行,等待客户端连接。") ;            client = server.accept() ;        // 得到连接,程序进入到阻塞状态            out = new PrintStream(client.getOutputStream()) ;            // 准备接收客户端的输入信息            buf = new BufferedReader(new InputStreamReader(client.getInputStream())) ;            boolean flag = true ;    // 标志位,表示可以一直接收并回应信息            while(flag){                String str = buf.readLine() ;        // 接收客户端发送的内容                if(str==null||"".equals(str)){    // 表示没有内容                    flag = false ;    // 退出循环                }else{                    if("bye".equals(str)){    // 如果输入的内容为bye表示结束                        flag = false ;                    }else{                        out.println("ECHO : " + str) ;    // 回应信息                    }                }            }            client.close() ;        }        server.close() ;    }};


客户端代码:
Java code
import java.net.* ;import java.io.* ;public class EchoClient{    public static void main(String args[]) throws Exception {    // 所有异常抛出        Socket client = null ;    // 表示客 户端        client = new Socket("localhost",8888) ;        BufferedReader buf = null ;    // 一次性接收完成        PrintStream out = null ;    // 发送数据        BufferedReader input = null ;    // 接收键盘数据        input = new BufferedReader(new InputStreamReader(System.in)) ;        buf = new BufferedReader(new InputStreamReader(client.getInputStream())) ;        [color=#FF0000]out = new PrintStream(client.getOutputStream()) ;[/color]        boolean flag = true ;        // 定义标志位        while(flag){            System.out.print("输入信息:") ;            String str = input.readLine() ;    // 接收键盘的输入信息            out.println(str) ;            if("bye".equals(str)){                flag = false ;            }else{                String echo = buf.readLine() ;    // 接收返回结果                System.out.println(echo) ;    // 输出回应信息            }        }        buf.close() ;        client.close() ;    }};


问题:现在服务器端将键盘输入的内容发送到服务器的代码是“out = new PrintStream(client.getOutputStream()) ”这里有个问题:PrintStream括号里不应该是发送的位置么,应该是发送到服务器上,可是这个不还是发送到客户端么?
服务器端也有这个代码“out = new PrintStream(client.getOutputStream()) ”,这个是向客户端发送信息,没错吧?

------解决方案--------------------------------------------------------
探讨

谁能解释下client.getInputStream()的作用?谢谢
  相关解决方案