服务端与客户端无限互发消息,输入指令退出程序
服务端:
package com.rj.bd.zy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
/**
* @desc 服务端
* @author ws
* @time 2018-10-17
*/
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8848);
System.out.println("服务端已启动,等等客户端连接:");
Socket serverSocket = server.accept();// 允许客户接入
System.out.println("服务端:连接成功!");
//创建对象和流和变量
Scanner cin = new Scanner(System.in);
String getInfo;
String sendInfo;
// 接受客户端发送过来的消息
InputStream inputStream = serverSocket.getInputStream();// 获取输入流对象
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);// 将输入流转换成输入流读取对象
BufferedReader reader = new BufferedReader(inputStreamReader);// 缓存读取对象
// 向客户端发送消息
OutputStream outPutStream = serverSocket.getOutputStream();// 将数据转换成输出流
PrintStream out = new PrintStream(outPutStream, true, "UTF-8");// 将输出流转为输出对象
String end = "no";//定义结束字符串
while (true) {
// 接收
getInfo = reader.readLine();
if (getInfo.equals(end)) {
System.out.println("服务端程序结束!");
System.exit(0);
}
System.out.println("获取从客户端传递过来的信息:" + getInfo);
// 发送
System.out.println();
System.out.println("服务端请输入信息:");
sendInfo = cin.nextLine();
out.println(sendInfo);// 向客户端发送输入的信息
if (sendInfo.equals(end)) {
System.out.println("服务端程序结束");
System.exit(0);
}
}
}
}
客户端:
package com.rj.bd.zy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
/**
* @desc 客户端
* @author ws
* @time 2018-10-17
*/
public class Client {
public static void main(String[] args) throws UnknownHostException,
IOException {
Socket socket = new Socket("localhost", 8848);
System.out.println("客户端开始连接:");
//创建对象和流和变量
Scanner cin = new Scanner(System.in);
String sendInfo;
String getInfo;
OutputStream outPutStream = socket.getOutputStream();// 将数据转换成输出流
PrintStream out = new PrintStream(outPutStream, true, "UTF-8");// 将输出流转为输出对象
InputStream inputStream = socket.getInputStream();// 获取输入流对象
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);// 将输入流转换成输入流读取对象
BufferedReader reader = new BufferedReader(inputStreamReader);// 缓存读取对象
String end = "no";//定义结束字符串
while (true) {
System.out.println();
// 发送
System.out.println("客户端请输入信息:");
sendInfo = cin.nextLine();
out.println(sendInfo);// 向服务端发送输入的信息
if (sendInfo.equals(end)) {
System.out.println("客户端程序结束");
System.exit(0);
}
// 接收
getInfo = reader.readLine();
if (getInfo.equals(end)) {
System.out.println("客户端程序结束");
System.exit(0);
}
System.out.println("获取从服务端传递过来的信息:" + getInfo);
}
}
}