/*
基于TCP传输的大小写转换服务
*/
客户端的建立。
public static void main(String[] args) throws UnknownHostException, IOException {
//1,创建socket客户端对象,寻求与服务端的连接。
Socket s = new Socket("192.168.1.100",10004);
//2,获取键盘录入。 使用转换流和缓冲。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//3,socket输出流。 true 自动刷新,避免存入缓冲区没有及时输出。也避免使用flush()方法刷新。此out流自动刷新。
// 将socket输出流包装为打印流, 打印流内部使用socket 输出流,转换流和缓冲区。实现字符流到字节流的转换并提高效率。
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
//4,socket输入流,读取服务端返回的大写数据。原理同上
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
//频繁读写操作。
String line = null;
while((line=bufr.readLine())!=null){
//结束标记
if("over".equals(line))
break;
/* 使用printLn在 line后加换行,本 while 中,readLine读到换行符返回字符串,字符串不含换行符,
* 服务端再此使用readLine进行循环读取时,字符串中已没换行符,导致readLine方法无法读到换行符
* 而一直读取,无法返回数据
* 此处使用printLn加换行符。
*/
out.println(line);
//读取服务端发回的一行大写数。
String upperStr = bufIn.readLine();
System.out.println(upperStr);
}
//键盘流不需要关闭。
s.close();
}
服务端的建立
public static void main(String[] args) throws IOException {
//1建立服务端 Socket,明确端口, 随时准备接入。服务端只提供端口。
ServerSocket ss = new ServerSocket(10004);
//2,获取接入的客户端socket对象。
Socket s = ss.accept();
//获取客户端ip. 此处 不必要,只为查明身份。
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"......connected");
//3,获取socket读取流,并装饰。
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
//4,获取socket的输出流,并装饰。使用true自动刷新
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
//频繁的读写操作。
String line = null;
while((line=bufIn.readLine())!=null){
System.out.println(line);
//使用printLn 加换行符。切out自动刷新
out.println(line.toUpperCase());
}
// 服务端无需关闭。
s.close();
}
基于TCP传输的大小写转换服务
猜你喜欢
转载自blog.csdn.net/qq_38003454/article/details/83241976
今日推荐
周排行