/*
* 【需求】创建一个英文大写转换服务器
* 客户端键盘输入字母数据,发送给服务端,服务端收到后显示在控制台,并将该数据转成大写反馈给客户端,直到客户端输入over为止
*/
/**
* 【分析】有客户端,也有服务端,用TCP传输协议完成。
*/
/**
* 【思路】
* 客户端:
* 1.需要先有Socket端点
*
* 2.客户端的数据源:键盘
* (将键盘输入数据。。。)
*
* 3.客户端的目的:Socket
* (。。。送给Socket,以便于发送给服务端)
*
* 4.接收服务端的数据,源:Socket
* (服务端来的数据用Socket接收。。。)
*
* 5.将数据显示再打印出来,目的:控制台
* (。。。以便于输出到控制台)
*
* 6.在这些流中操作的数据,都是纯文本数据
*
*/
/**
* 转换客户端:
* 1.创建Socket客户端对象
* 2.获取键盘录入
* 3.将录入的信息发送给Socket输出流
*/
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class TextTransClient {
public static void main(String[] args) throws UnknownHostException, IOException {
/**
* 【小习惯】
* 【流对象名称中凡是带in或者out字样的,都是Socket流,不带的就是一般输入输出流】
*/
//1.创建Socket客户端对象
Socket s = new Socket("10.196.19.56",10004);
//2.获取键盘录入
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//3.Socket输出流(直接用打印流完成,直接将数据打印给Socket输出流)
PrintWriter out = new PrintWriter(s.getOutputStream(),true);//这里传入true是启用自动flush功能
//4.Socket输入流,用于读取服务端反馈的数据
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
//(getInputStream()获取到的是字节流,用转换流InputStreamReader将其转为字符流,方便下面读取操作)
String line = null;
while((line=bufr.readLine())!=null){
if("over".equals(line))
break;
out.println(line);//将键盘录入的数据一行一行给Socket输出流
//读取服务端反馈的一行大写数据
String upperStr = bufIn.readLine();
/*
* 上面客户端向服务端发送一行数据,这里接收一行服务端反馈数据,需求就是客户端发一行字母数据给服务端,服务端反馈大写形式,
* 所以这里发送和接收代码必须全部写在while内部
*/
System.out.println(upperStr);
}
//关闭资源
s.close();
}
}
26-网络编程-13-网络编程(TCP协议-练习-文本转换客户端)
最新推荐文章于 2022-09-02 00:05:23 发布