请问一个服务器端和客户端连接的有关问题,谢谢
请教一个服务器端和客户端连接的问题,多谢!
服务器端代码:
客户端代码:
问题:现在服务器端将键盘输入的内容发送到服务器的代码是“out = new PrintStream(client.getOutputStream()) ”这里有个问题:PrintStream括号里不应该是发送的位置么,应该是发送到服务器上,可是这个不还是发送到客户端么?
服务器端也有这个代码“out = new PrintStream(client.getOutputStream()) ”,这个是向客户端发送信息,没错吧?
------解决方案--------------------
服务器端代码:
- 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()) ”,这个是向客户端发送信息,没错吧?
------解决方案--------------------