版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
需求:
客户端向服务器端发送文本,服务端将文本中的小写字母转换为大写后,再将文本返回给客户端,客户端可以不断地发送文本,当客户端输入over时,转换结束。
客户端:
public static void main(String[] args) throws IOException {
//创建Socket对象并绑定服务器端口
Socket socket = new Socket(InetAddress.getLocalHost(), 30000);
//用转换流将Socket内部向网络写数据的输出流转成字符缓冲写出流
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//用转换流将Socket内部从网络读数据的读入流转成字符缓冲读入流
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
Scanner in = new Scanner(System.in);
//不断写入数据
while (true){
//从键盘输入数据
String data = in.nextLine();
//写数据
bufferedWriter.write(data);
//添加换行
bufferedWriter.newLine();
//刷新
bufferedWriter.flush();
//只有输入“over”才结束通信
if (data.equals("over")){
break;
}
//接收服务器返回的信息
System.out.println(bufferedReader.readLine());
}
//关闭资源
bufferedWriter.close();
socket.close();
}
服务器端:
public static void main(String[] args) throws IOException {
//创建ServerSocket对象并设置端口
ServerSocket serverSocket = new ServerSocket(30000);
//接收从客户端传来的socket对象
Socket socket = serverSocket.accept();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//不断从网络接收数据
while (true){
//使用data接收数据
String data = bufferedReader.readLine();
//输出接收的信息
System.out.println(data);
//判断如果是“over”结束通信
if(data.equals("over")){
break;
}
//将数据处理后,写回客户端
bufferedWriter.write("将小写字母转成大写:"+data.toUpperCase());
bufferedWriter.newLine();
bufferedWriter.flush();
}
//关闭资源
bufferedReader.close();
serverSocket.close();
}