有这样一个需求:

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

而且客户端可以不断的进行文本转换,当客户端输入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. Smack+Openfire 接收和发送文件

    转载请注明出处:http://blog.csdn.net/steelychen/article/details/37958839 发送文件须要提供准确的接收放username称(例:user2@192 ...

  2. c++11 线程:让你的多线程任务更轻松

      介绍 本文旨在帮助有经验的Win32程序员来了解c++ 11线程库及同步对象 和 Win32线程及同步对象之间的区别和相似之处. 在Win32中,所有的同步对象句柄(HANDLE)是全局句柄.它们 ...

  3. React 入门最好的实例-TodoList

    React 的核心思想是:封装组件,各个组件维护自己的状态和 UI,当状态变更,自动重新渲染整个组件. 最近前端界闹的沸沸扬扬的技术当属react了,加上项目需要等等原因,自己也决定花些时间来好好认识 ...

  4. bit、byte、位、字节、字符串等概念

    原始文章:http://djt.qq.com/article/view/658 1.古代送信:马车,烽火,信鸽 2.1837年,世界第一条电报诞生, 美国科学家莫尔斯尝试用一些“点”和“划”来表示不同 ...

  5. AVT Vimba与OpenCV环境配置

    近来,由于项目需求,需要使用AVT的一款相机采集图像并进行相应的算法处理.环境的配置过程较为复杂,特此记录,以做备忘.也给有需要的小伙伴们一些key point的分享. 搭建环境:Windows7 + ...

  6. 使用.NET框架、Web service实现Android的文件上传(一)

    上面是上传结果的展示,下面具体讲一下实现过程. 一.Web Service (.NET) namespace VedioPlayerWebService.service.vedios { [WebSe ...

  7. cxf的使用及安全校验-02创建简单的客户端接口

    上一篇文章中,我们已经讲了如果简单的创建一个webservice接口 http://www.cnblogs.com/snowstar123/p/3395568.html 现在我们创建一个简单客户端接口 ...

  8. hdu1406

    一道很水很水的题!!!!!!!!!! #include<iostream> using namespace std; int main(){ int num1,num2,i,k,j,sum ...

  9. [Leetcode] Longest Consecutive Sequence 略详细 (Java)

    题目参见这里 https://leetcode.com/problems/longest-consecutive-sequence/ 这个题目我感觉很难,看了半天别人写的答案,才明白个所以然.下面的代 ...

  10. Truncate Table user

    Truncate Table   百科名片 Truncate是一个能够快速清空资料表内所有资料的SQL语法.并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用. 目录 语法 参数 注释 示例 ...