有这样一个需求:

客户端给读物段发送文本,服务端会将文本转换为大写再返回客户端

而且客户端可以不断的进行文本转换,当客户端输入over时,转换结束。

分析:

既然是操作设备上的数据,那么久可以使用io技术,并按照io的操作规律来思考

源:键盘录入

目的:网络设备、网络输出流

而且操作的是文本数据,可以选择字符流

//客户端实现:

package com.shindo.java.tcp;
import java.io.*;
import java.net.*;
/**
* 步骤:
* 1、建立服务
* 2、获取键盘输入
* 3、将数据发送给服务端
* 4、获取服务端返回的数据
* 5、结束,关闭资源
* 都是文本数据,可以使用字符流进行操作,同时提高效率,加入缓冲
*/
public class TransClient {
public static void main(String[] args){
try {
Socket s = new Socket("127.0.0.1",11013);
//定义读取键盘输入的输入流对象
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); //定义目的,将数据写入到Socket的输出流,发给服务端
//方法1:
// BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//方法2:第二个参数为自动刷新的标志,true为自动刷新
PrintWriter out = new PrintWriter(s.getOutputStream(),true); //定义一个Socket的读取流,读取服务端返回的大写信息
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream())); String line = null;
while((line = bufr.readLine()) != null){
if("over".equals(line)) break; //方法1:
// bufOut.write(line);
// bufOut.newLine();//为了让流结束
// bufOut.flush();//刷新缓冲区 //方法2:
out.println(line); String strBack = bufIn.readLine();
System.out.println("服务端响应:" + strBack );
} } catch (Exception e) {
e.printStackTrace();
} }
}

//服务端实现:

package com.shindo.java.tcp;
import java.io.*;
import java.net.*;
/**
* 服务端
* 流:Socket读取流
* 目的:Socket输出流
* 都是文本装饰
*/
public class TransServer {
public static void main(String[] args){
try {
//获取客户端对象
ServerSocket ss = new ServerSocket(11013);
Socket s = ss.accept(); //打印请求进来的客户端对象
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip + "...... is connected"); //读取Socket读取流中的数据
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream())); //目的Socket输出流,将大写数据写入Socket输出流,发给客户端
//方法1:
// BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); //方法2:第二个参数为自动刷新的标志,true为自动刷新
PrintWriter out = new PrintWriter(s.getOutputStream(),true); String line = null;
while((line = bufIn.readLine())!= null){
//打印客户端发送过来的数据
System.out.println(line); //将数据转换为大写,然后发送给客户端
//方法1:
// bufOut.write(line.toUpperCase());
// bufOut.newLine();
// bufOut.flush(); //方法2:
out.println(line.toUpperCase()); s.close();
ss.close();
} } catch (Exception e) {
e.printStackTrace();
} }
}

效果如图:

客户端:

服务端:

Tcp实现简单的大小写转换功能的更多相关文章

  1. 在Linux命令行内的大小写转换

    在编辑文本时大小写常常是需要注意的地方,大小写的转换是很枯燥而繁琐的工作,所幸,Linux 提供了很多能让这份工作变得容易的命令.接下来让我们看看都有哪些完成大小写转换的命令. tr 命令 tr (t ...

  2. javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  3. JAVA之旅(十六)——String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较

    JAVA之旅(十六)--String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较 过节耽误了几天,我们继续JAVA之旅 一.String概述 String时 ...

  4. VIM 单词大小写转换

    遇到大小写转换的时候,我觉得首先一个不应该直接放弃的选择就是采用正则表达式以及文本替换功能.不过,针对单个单词的转换在VIM中还有更为简单的方式. 组合命令gUw可以实现把光标当前所在位置的一个单词转 ...

  5. js中实现字母大小写转换

    js中实现字母大小写转换主要用到了四个js函数: 1.toLocaleUpperCase  2.toUpperCase3.toLocaleLowerCase4.toLowerCase 下面就这四个实现 ...

  6. java11-5 String类的转换功能

    String的转换功能: byte[] getBytes():把字符串转换为字节数组. char[] toCharArray():把字符串转换为字符数组. static String valueOf( ...

  7. 黄聪:PHP字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、切割成数组等)

    一.字符串替换 str_replace("iwind", "kiki", "i love iwind, iwind said"); 将输出 ...

  8. Java基础知识强化34:String类之String类的转换功能

    1. String类的转换功能 String[] split(String regex)//将字符串变成字符串数组(字符串切割) byte[] getBytes()//将字符串变成字节数组 char[ ...

  9. Netty学习笔记(四) 简单的聊天室功能之服务端开发

    前面三个章节,我们使用了Netty实现了DISCARD丢弃服务和回复以及自定义编码解码,这篇博客,我们要用Netty实现简单的聊天室功能. Ps: 突然想起来大学里面有个课程实训,给予UDP还是TCP ...

随机推荐

  1. CSS3 div水平、垂直居中,IE9以上、Firefox、Chrome均正常

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. Java操作属性文件,支持新增或更新多个属性

    Java操作属性文件.支持新增或更新多个属性 一.更新或新增单个属性的方法 /** * 写入properties信息 * @param filePath 绝对路径(包含文件名称和后缀名) * @par ...

  3. IIS PHP 配置 问题总结

    今天帮助朋友解决一个IIS配置PHP的问题.大概是这样子的. IIS 与 PHP配置好了之后不能訪问,出现例如以下错误: HTTP 错误 500.19 - Internal Server Error ...

  4. 基于注解的Spring MVC

    1.加入�jar 2.web.xml配置: <?xml version="1.0" encoding="UTF-8"?> <web-app v ...

  5. AVD启动不了 ANDROID_SDK_HOME is defined but could not find *.ini

    报错提示______________________________________________________________________ Starting emulator for AVD ...

  6. DBHerperl类

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.D ...

  7. JS中的for和for in循环

    1.for循环通常用来遍历数组或类数组对象 模式1:长度缓存 for(var i=0,max=arr.length;i<max;i++){ //your code } 模式2:逐减,与零比较比与 ...

  8. SpringMVC中用@ParamVariable传递的参数包含斜杠(/)时,匹配不了报404错误的解决方案

    今天做网站[标签]筛选功能时,出现了这么个奇葩的问题. 我是直接通过<a>标签中href来跳转的,url中包含汉字 <a href="/tags/标签A"> ...

  9. winPcap_2_编译环境*注意*

    使用WinPcap编程 创建一个使用 wpcap.dll 的应用程序 用 Microsoft Visual C++ 创建一个使用 wpcap.dll 的应用程序,需要按以下步骤: 在每一个使用了库的源 ...

  10. hadoop配置文件的加载机制

    hadoop通过Configuration类来保存配置信息 1.通过Configuration.addResource()来加载配置文件 2.通过Configuration.get***()来获取配置 ...