客户端输入一条信息,发送到服务端,服务端接收并返回修改后的信息。当客户端输入"byebye"时,通讯结束。
package acc;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class EchoServer {
public static void main(String[] args) throws Exception {
ServerSocket server=new ServerSocket(9999);//设置服务监听端口
System.out.println("等待客户端连接.........");//打印提示信息
Socket client=server.accept(); //等待客户端连接
//首先需要先接受客户端发送来的信息,而后才可以将信息处理之后发送回客户端
Scanner scan=new Scanner(client.getInputStream());//客户端输入流
scan.useDelimiter("\n");//设置分隔符 //设置分隔符
PrintStream out=new PrintStream(client.getOutputStream());//客户端输出流
boolean flag=true;
while(flag) {
if(scan.hasNext()) { //有数据接收
String val=scan.next().trim();//接收数据内容
if("byebye".equalsIgnoreCase(val)) {//结束标记
out.println("ByeBye.....");//回应信息
flag=false;//结束循环
}else {
out.println("【ECHO】"+val);//Echo信息
}
}
}
scan.close();//关闭输入流
out.close();//关闭输出流
client.close();//关闭客户端
server.close();//关闭服务端
}
}
package acc;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class EchoClient {
private static final BufferedReader KEYBOARD_INPUT=new BufferedReader(
new InputStreamReader(System.in));
public static String getString(String prompt) throws Exception{//键盘信息输入
System.out.println(prompt);
String str=KEYBOARD_INPUT.readLine();
return str;
}
public static void main(String[] args) throws Exception {
Socket client=new Socket("localhost",9999);//定义服务端的连接信息
//现在的客户端需要有输入与输出的操作支持,所以依然要准备出Scanner与PrintWriter
Scanner scan=new Scanner(client.getInputStream());//接受服务端输入内容
scan.useDelimiter("\n");
PrintStream out=new PrintStream(client.getOutputStream());//向服务端发送内容
boolean flag=true;//循环标记
while(flag) { //循环处理
String input=getString("请输入要发送的内容:").trim();//获取键盘输入数据
out.println(input);
if(scan.hasNext()) {//服务端有回应
System.out.println(scan.next());//输入回应信息
}
if("byebye".equalsIgnoreCase(input)) {
flag=false;
}
}
scan.close();
out.close();
client.close();
}
}