java socket 网络编程 实现简单的控制台聊天

Client端

public static void main(String[] args) {
		try {
			System.out.println("客户端已启动");
			//创建socket  向本机的4700端口发出客户请求
			Socket socket = new Socket("127.0.0.1",0320);
			//由系统标准输入设备构造BufferedReader对象
			//接收控制台消息的输入流
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		    //由Socket对象得到输出流,并构造PrintWriter对象
			PrintWriter pw = new  PrintWriter(socket.getOutputStream());
			//由socket对象得到输入流,并构造相应的BufferedReader对象
			//接收socket消息的输入流
			BufferedReader br_s = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			//读取控制台接收的字符 一次读一行
			String readline = br.readLine();
			//若从标准输入读入的字符串为 "bye"则停止循环
			while(!readline.equals("bye")) {
				//将从控制台读入的字符串输出到Server
				pw.println(readline);
				//刷新输入流, 使server立马收到该字符串
				pw.flush();
				//在控制台打印读入的字符串
				//System.out.println("Client:" + readline);
				//接收服务器数据 打印出来
				System.out.println("服务器的消息:" + br_s.readLine());
				//保证一直监听 一直循环
				readline = br.readLine();
			}
			System.out.println("聊天结束!");
			br_s.close();
			pw.close();
			br.close();
			socket.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

Server端

public static void main(String[] args) {
		
		try {
			System.out.println("服务器已启动");
			//监听客户端的请求
			ServerSocket server = new ServerSocket(0320);
			Socket socket = server.accept();
			//读取socket的输入流
			BufferedReader br_s = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			//接收客户端socket输出流
			PrintWriter pw = new PrintWriter(socket.getOutputStream());
			//读取控制台的输入流
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			//打印从客户端读取的字符串
			System.out.println("客户端的消息:"+ br_s.readLine());
			//读取控制台内容
			String readline = br.readLine();
			while(!readline.equals("bye")) {
				//向客户端输出该字符串
				pw.println(readline);
				//刷新输出流 使客户端立马显示
				pw.flush();
				//在系统标准输出上打印读入的字符串
				//System.out.println("Server:"+ readline);
				//从Client读入一字符串,并打印到标准输出上
				System.out.println("客户端的消息:"+ br_s.readLine());
				//从系统标准输入读入一字符串
				readline = br.readLine();
			}
			System.out.println("聊天结束!");
			br.close();
			pw.close();
			br_s.close();
			socket.close();
			server.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值