有这样一个需求:

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

而且客户端可以不断的进行文本转换,当客户端输入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. (转)iOS Wow体验 - 第二章 - iOS用户体验解析(2)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第二章译文精选的第二部分,其余章节将陆续放出.上一 ...

  2. [2011山东省第二届ACM大学生程序设计竞赛]——Identifiers

    Identifiers Time Limit: 1000MS Memory limit: 65536K 题目:http://acm.sdut.edu.cn/sdutoj/problem.php?act ...

  3. Difference between enabled and userInteractionEnabled properties

    I read through the documentation, and here are my findings. UIButton inherits from UIControl the boo ...

  4. Eclipse 将projectBuild Path中引用的jar包自己主动复制到WEB-INF下的lib目录下

    在用用 Eclipse进行Java Web开发时,web应用中引用的jar须要复制到WEB-INF下的lib目录下,否则常常出现ClassNotFound异常. 通过以下方法,能够不用手动拷贝jar包 ...

  5. qwtplot3D安装及运行-----终结解决方案

    ..\qwtplot3d\include\qwt3d_openglhelper.h:67: 错误:'gluErrorString' was not declared in this scope..\q ...

  6. Traceroute程序

    Linux和Unix中为traceroute,Windows中对应的是Tracert.如:Tracert www.baidu.com   输出为路由信息. C:\Users\Administrator ...

  7. 将samba加入到windows域《转载》

    将samba加入到windows域 那什么是域呢? 一台Windows计算机,它要么隶属于工作组,要么隶属于域.所以说到域,我们就不得不提一下工作组,工作组是MS的概念,一般的普遍称谓是对等网. 工作 ...

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

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

  9. jquery选择指定元素之外的所有元素

    最近的项目中有这么一个需求,点击一排图片中的任意一张后底部弹出一个对话框,要求点击任意地方隐藏对话框 这个时候用not()显然是不现实的,用closest()可以实现差不多的功能 <!DOCTY ...

  10. aspx生成验证码

    //定义方法 public partial class VerificationCode : System.Web.UI.Page    {        string ImagePath = &qu ...