java实现文本转换器

需求和分析

  用java实现文本转换器
  这是一个TCP连接。客户端将文本发送到服务端,服务端会将文本转换成大写形式,并返回给客户端。当客户端发送“over”的时候,就关闭客户端和服务端。
  分析:
  1、客户端
  客户端从键盘录入数据,然后发送到服务端。这个过程中,源是键盘录入,目的是网络输出流,并且都是字符,因此可以使用字符流。为了提高效率,加入缓冲区技术。如果键盘录入的是“over”,那么会发送“over”,并且关闭资源。
  客户端从网络输入流中接收服务端发来的大写形式,这个过程中,源是网络输入流,目的是控制台,直接输出即可。
  2、服务端
  服务端从网络输入流中获取数据,这个过程中,源是网络输入流,使用加入缓冲区技术的字符流。对接收的文本进行处理,如果是“over”,那么直接关闭资源,如果不是,那么对其进行大写转换,然后发送给客户端,这个过程中,目的是网络输出流。
  3、注意
  在输出流中,如果使用BufferedWriter对象,那么注意写入数据之后一定要flush,否则数据只是写到了缓冲区,并没有写到真正的目的。因为对方读取都是调用readLine(),这是阻塞式方法,必须有换行符才可以,否则一直阻塞,因此写的时候,需要加入换行符。
  当然也可以使用PrintWriter,调用println()能够将数据直接输出到指定流中,并且自动换行。PrintWriter(OutputStream/Writer out, true)中的true可以使得流能够有效的自动刷新,该类的构造函数,既可以接收字节流,也可以接收字符流,因此更为简便。
  当客户端关闭连接的时候,会向socket流中写入-1,这样服务端在读到-1的时候,就知道客户端关闭了连接,就会关闭服务器的socket服务,通信结束。代码1-3都是使用了客户端和服务端两个线程,代码4将客户端拆成发送线程和接收线程,更符合实际通信过程。

代码1:

/* 
使用字节流进行读写操作。
*/
import java.io.*;
import java.net.*;

//客户端
class TCPClient{
	public static void main(String[] args)throws Exception{
		//创建socket服务,并建立到服务器的连接
		Socket s = new Socket("192.168.254.136", 8000);

		//键盘录入需要转换的文本
		BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

		//网络输出流,将键盘录入的数据输出到输出流中,发送到服务端
		OutputStream out = s.getOutputStream();
		InputStream in = s.getInputStream();

		String line = null;
		while((line = bufr.readLine()) != null){
			out.write(line.getBytes());
			if("over".equals(line)){
				break;
			}

			//循环接收数据
			byte[] buf = n
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值