西农大 Java实习 实验七 网络编程 习题二

本文展示了如何使用Java的Socket和ServerSocket类构建一个简单的客户端-服务器通信程序。客户端发送'Time'命令获取服务器时间,发送'Exit'命令断开连接。服务器端接收到命令后作出相应响应,如返回当前时间或发送'Bye'并退出。程序提供了完整的源代码,并展示了运行结果。
摘要由CSDN通过智能技术生成

任务二:Socket类和ServerSocket类练习

  1. 利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。
  2. 客户端向服务器端发送“Time”命令,服务器端接受到该字符串后将服务器端当前时间返回给客户端;客户端向服务器端发送“Exit”命令,服务器端向客户端返回“Bye”后退出。
  3. 基本要求:编写完整程序;两人一组,一个作为服务器端,另一人作为客户端。服务器端和客户端都需要打印出接受到的消息和发出的命令。
  4. 程序运行结果如下:

客户端                      服务器端

package second;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Server {

	public static void main(String[] args) {
		try {
			System.out.println("服务器已打开");
			ServerSocket server = null;
			server = new ServerSocket(4331);
			Socket you = null;

			System.out.println("等待客户呼叫");
			you = server.accept();
			System.out.println("用户已连接");
			BufferedReader br;
			BufferedWriter bw;

			br = new BufferedReader(new InputStreamReader(you.getInputStream()));
			bw = new BufferedWriter(new OutputStreamWriter(you.getOutputStream()));

			while (true) {
				
				char[] buffer = new char[40];
				int a = br.read(buffer);

				String s = new String(buffer,0,4);

				System.out.println(s);

				if (s.equals("Time")|| s.equals("time")) {
					Date date = new Date();
					SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					System.out.println(date);
					String s2 = "" + format.format(date);
					bw.write(s2);
					bw.flush();
				}

				else if (s.equals("Exit")|| s.equals("exit")) {
					bw.write("Bye");
					System.out.println("连接已经断开");
					bw.flush();
					server.close();
					you.close();
					br.close();
					bw.close();
					
					break;
				} 
				else if(s.equals("Good") || s.equals("good"))
				{
					bw.write("你是最棒的!!^_^ ^_^");
					System.out.println("亲切的回复^_^");
					bw.flush();
				}
				else
				{
					bw.write("输入错误!!");
					bw.flush();
				}

			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("用户已退出");
			e.printStackTrace();
		}
	}

}
package second;

import java.io.*;
import java.net.*;
import java.util.Scanner;

public class Client {

	public static void main(String[] args) {

		try {
			Socket mysocket = new Socket("127.0.0.1", 4331);

			BufferedReader br;
			BufferedWriter bw;

			br = new BufferedReader(new InputStreamReader(mysocket.getInputStream()));
			bw = new BufferedWriter(new OutputStreamWriter(mysocket.getOutputStream()));

			String s;
			System.out.println("欢迎使用^_^ ^_^");
			Scanner rd = new Scanner(System.in);
			s = rd.next();
			while (true) {
				String s2 = "";
				bw.write(s);
				bw.flush();
				
				char[] buffer = new char[40];
				int a = br.read(buffer);
				s2 = new String(buffer);

				System.out.println("" + s2);
				if (s.equals("Exit")|| s.equals("exit")) {

					br.close();
					bw.close();
					System.out.println("程序已关闭");
					System.exit(0);
				}
				s = rd.next();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值