黑么程序员(二):建立一个连接客户端和服务端的文本转换服务器

需求 建立一个文本转换服务器
客户端给服务端发送文本,服务端会将文本转成大写返回给客户端
而且客户端可以不断的进行文本转换,当客户端输入OVER时,
转换结束


分写:
客户端:既然是操作设备上的数据,那么就可以使用io技术,
并按照Io的操作规律来思考
源:金盘录入
目的:网络设备,网络输出流
而且操作的是文本数据,可以选择字符流


步骤


1,建立服务
2,将键盘录入
3,将数据发给服务端
4,打印服务区返回的大写数据
5,结束关资源


都是文本数据,可以使用字符流进行操作,同时提高效率加入缓冲。

class User//定义客户端类
{
	public static void main(String[] args)throws Exception
	{
		Socket s=new Socket("127.0.0.1",1004);
		//客户端输出流,因为操作的都是文本。所以可以直接用字符流操作
		BufferedWriter bw=new BufferedWriter (new OutputStreamWriter(s.getOutputStream()));
		//客户端通过输入流读取键盘录入
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		//客户端通过输入流读取服务端返回到的信息。用字符流
		BufferedReader brsever=new BufferedReader(new InputStreamReader(s.getInputStream()));
		String line=null;
		while(true)//这里可以用true。因为键盘录入是不可能独到空的。
		{
			line=br.readLine();
			//判断如果键盘录入over。循环结束
			if(line.equals("over"))
			break;
			//把读取到的键盘录入信心写到客户端输出流中
			bw.write(line);
			//必须要换行。因为是在控制台中操作,没有换行,服务端读取不到换行信息会一直读下去。
			bw.newLine();
			bw.flush();
			//读取服务端返回来的信息并打印出来
			String severinfo=brsever.readLine();
			System.out.println(severinfo);
		}
		//new Thread(new UserAccept(s)).start();
		//关闭流
		s.close();

	}
}

class Sever//定义服务端类
{
	public static void main(String[] args)throws Exception
	{
		ServerSocket ss=new ServerSocket(1004);
		Socket s=ss.accept();
		//通过字符输入流读取服务端读取客户端发出来的信息
		BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
		//通过输出流再把服务端要返回的信息写进去。
		BufferedWriter bw=new BufferedWriter (new OutputStreamWriter(s.getOutputStream()));
		String line=null;
		while((line=br.readLine())!=null)//这里要用因为客户端关闭流之后,会返回一个-1,这里读取之后直接返回null,然后继续往下读。
		{
			String s1=line.toUpperCase();
			bw.write(s1);
			bw.newLine();//和客户端道理一样,返回出去的数据时没有换行标记的所以要加上换行
//否则的话客户端读取不到换行标记会一直读。
			bw.flush();
		}
		s.close();
		ss.close();
		
	}

}

简单的小程序写完了,

注意一点:因为客户端和服务端都是有阻塞式方法,这些方法没有独到结束标记,那么一直等导致两端都在等待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值