新手:TCP协议-客户端-服务端-文本转换问题
来源:互联网 发布:闪电抢购软件 编辑:程序博客网 时间:2024/05/30 20:06
对于我这种刚学习的童鞋,没有项目可言,只好拿练习当个项目玩,像小时候过家家一样,弄得像那么回事。成就感也是油然而生啊。
需求分析
客户要求实现自己在客户端输入的字母提交后能够返回大写字母(好雷人的客户,以后叫他阿雷吧,学习的过程总是雷人的)
1 搭建客户端思路:
1 不用多说,TCP客户端,Socket socket
字母拿来的啊?自己输入的,源是键盘:System.in
获取的字母如何发送给服务端?用socket的getOutputStream()方法获取它的输出流来实现
基本的读写操作
还要接收服务端处理后给我们的大写字母呢,用什么接?
用socket的getInputStream()方法来读取服务端
我发送一行也是发,发送一个也是发,那就来个装饰模式,整个BufferedWriter?
不行,那个套来套去,太麻烦,不就是想保持字母原类型嘛,用PrintWriter多好
我每发送一行,服务端给我处理一行,我就接收一行
关闭资源socket.close();
定义一个结束标记,想结束的时候就输入结束标记用来关闭客户端
代码如下:
package cn.lan.tcp;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;public class TcpClient {/** * 文本转换客户端 * 思路:1想到客户端Socket * 2字母从哪来?键盘录入,源是键盘:System.in * 3发送出去,目的是哪里?网络,socket,要发送就得有输出流啊,用socket自己的getOutputStream * 4发送数据 * 5接收服务端将字母转换好的文本,源是网络,读取用什么?socket自己的getInputStream,每发送一次接收一次 * 6关闭服务端 * @throws IOException * @throws UnknownHostException */public static void main(String[] args) throws UnknownHostException, IOException {// TODO Auto-generated method stubSocket socket = new Socket("192.168.48.1",10004);BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);BufferedReader bufIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));String line = null;while((line = bufr.readLine())!=null){if("over".equals(line))break;out.println(line);String upperStr = bufIn.readLine();System.out.println(upperStr);}socket.close();}}
2 搭建服务端
不用多说,TCP服务端,ServerSocket ss
获取客户端对象,利用 服务端对象的accept()方法
客户端对象传来的数据,只有客户端自己最清楚,用getInputStream()方法来读取
还得完成返回任务呢,是客户端想知道大写是什么样,怎么把处理完的扔回去?
得了,来是你,走也是你,获取到的客户端对象就受累吧ss.getOutputStream,同样的,给它用个PrintWriter装上
一顿读写 把客户端发来的字母原小写打印在自身的控制台上,把处理后的 结果返回给客户端
关闭资源
package cn.lan.tcp;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class TcpServer {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubServerSocket ss =new ServerSocket(10004);Socket s = ss.accept();String conID = s.getInetAddress().getHostAddress();System.out.println(conID+".....connection");BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()),true);String line = null;while((line = bufr.readLine())!=null){System.out.println(line);out.println(line.toUpperCase());}s.close();ss.close();}}
这个练习主要需要注意的是:
如果不用PrintWriter是否会出现问题,该怎么解决出现的问题
刚开始在这着实犯了迷糊,看看你在这个地方出现过问题没有
- 新手:TCP协议-客户端-服务端-文本转换问题
- tcp协议下,客户端向服务端发送一串文本,在服务端经过处理后,返回文本的大写
- 26-网络编程-14-网络编程(TCP协议-练习-文本转换服务端)
- TCP-建立一个文本转换服务端
- 新手学习-Tcp的服务端与客户端之间进行通讯
- (基于UDP协议/tcp协议)socket客户端,服务端
- 26-网络编程-13-网络编程(TCP协议-练习-文本转换客户端)
- 黑马程序员-TCP协议服务端ServerScoket接收客户端并发请求。
- TCP协议从客户端传送文件给服务端
- 【Java源码】TCP协议之服务端与客户端文件传输
- 黑马程序员------TCP协议-客户端&服务端建立通信
- TCP协议下---客户端与服务端一问一答聊天
- TCP协议——客户端与服务端一问一答聊天
- 基于TCP协议的socket客户端和服务端
- Socket TCP 协议实现服务端和客户端的简单通信
- TCP练习2: 客户端给服务端发送文本,服务端将文本转成大写再返回给客户端
- TCP服务端与客户端
- tcp客户端服务端demo
- 《深度探索C++对象模型》读书笔记之构造、析构、拷贝语意学
- Document 对象属性及方法小结
- 《深度探索C++对象模型》读书笔记之执行期语意学
- sqlplus常用命令
- mixed implicit and normal rules. Stop.
- 新手:TCP协议-客户端-服务端-文本转换问题
- 关于抽象类和接口
- Android开发之handler(三)handler真的是重新启动一个线程吗?
- Div+CSS+JS 开发简易的菜单栏目
- 如何生成Detours.lib Detours的使用准备
- 问答学习《深度探索C++对象模型》系列
- js全国省市区(县)三级联动
- CMS:文章管理之视图(3)
- gp基础篇-用户与资源队列管理