小说网站 搜小说 无限网 烟雨红尘 小说爱好者 免费小说 免费小说网站

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

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

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

客户端代码:

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;中的os

		String 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();//服务器不用关闭
	}
}



posted on 2016-05-28 21:33  王小航  阅读(221)  评论(0编辑  收藏  举报

导航