《java入门第一季》之tcp协议下的编程实现键盘录入数据不断地往服务器端发送数据案例

来源:互联网 发布:阿里妈妈解绑淘宝账号 编辑:程序博客网 时间:2024/06/05 20:05

这里要封装通道流,封装键盘录入数据流。

同样地,还是两台电脑。一个客户端,一个服务器。

客户端代码:

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;/* * 客户端键盘录入,服务器输出到控制台 */public class ClientDemo {public static void main(String[] args) throws IOException {// 创建客户端Socket对象Socket s = new Socket("192.168.1.105", 22222);//这里的地址是服务器端的IP地址和端口号// 键盘录入数据BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 把通道内的流给包装一下BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//在这里bw的功能相当于原来OutputStream os = s.getOutputStream;中的osString line = null;while ((line = br.readLine()) != null) {// 键盘录入数据要自定义结束标记,如果不定义则客户端永远不会停止下来。if ("886".equals(line)) {break;}bw.write(line);//BufferedWriter封装字符流写入数据的时候,一定要带着换行才满足一行一行的写入。最后写完数据也不要忘记flush()保证数据的 写入bw.newLine();bw.flush();}// 释放资源// bw.close();//socket关闭了,(封装的)bw也会自动关闭所以不用谢bw.close();// br.close();//键盘自定义录入结束了,已经没了键盘录入,所以br也早就关闭可以不写br.colse。这里是键盘录入封装起来的s.close();}}
服务端代码:

package cn.itcast_08;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;public class ServerDemo {public static void main(String[] args) throws IOException {// 创建服务器Socket对象ServerSocket ss = new ServerSocket(22222);// 监听客户端连接Socket s = ss.accept();// 包装通道内容的流BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));String line = null;while ((line = br.readLine()) != null) {System.out.println(line);}// br.close();//s关闭了br就跟着关闭了s.close();// ss.close();//服务器不用关闭}}



1 0
原创粉丝点击