Java高级特性第五章课后作业

2.编写一个程序,查找指定域名为www.taobao.com的所有可能的IP地址。

import java.net.InetAddress;

public class Test {
	public static void main(String[] args) {
		try {
			System.out.println("-----淘宝的主服务器地址-----");
			InetAddress is = InetAddress.getByName("www.taobao.com");
			System.out.println(is);
			
			System.out.println("-----淘宝的所有服务器地址-----");
			InetAddress []  in = InetAddress.getAllByName("www.taobao.com");
			for (int i = 0; i < in.length; i++) {
				System.out.println(in[i]);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.err.println("没有这个网址!");
		}
		
	}
}


3.模拟用户登录,预设用户数据,提示登录成功或不成功的原因。

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 服务器类
 * @author suixin
 *
 */
public class MyServerSocket {
	
	private String name = "suixin"; //在服务器预设用户名;
	
	private String password = "suixin1213"; //在服务器预设密码
	
	public String getName() {
		return name;
	}
	
	public String getPassword() {
		return password;
	}
	
	public static void main(String[] args) {
		
		try {
			//1.创建服务器对象
			ServerSocket serverSocket = new ServerSocket(8888);
			
			while (true) {
				//2.启动监听客户端accept()方法,用Socket接收
				Socket socket = serverSocket.accept();
				new LoginThread(socket).start();;  //调用处理客户端信息线程
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


import java.io.BufferedWriter;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;

/**
 * 处理登录信息的线程类
 * @author suixin
 *
 */
public class LoginThread extends Thread {

	private Socket socket; //套接字对象
	
	
	public LoginThread(Socket socket) {
		super();
		this.socket = socket;
	}


	@Override
	public void run() {
		// TODO Auto-generated method stub
		super.run();
		MyServerSocket myServerSocket = new MyServerSocket(); //创建服务器对象获得预设的用户名和密码
		try {
			//1.打开输入流读取客户端发送的请求
			ObjectInputStream inputStream = new ObjectInputStream(socket.getInputStream());  //反序列化获取对象信息
			Guest user = (Guest)inputStream.readObject();
			System.out.println("我是服务器,客户的登录信息为:"+user.toString());
			socket.shutdownInput();
			
			//2.打开输出流发送给客户端反馈信息
			OutputStream outputStream = socket.getOutputStream();
			BufferedWriter biw = new BufferedWriter(new OutputStreamWriter(outputStream));
			//判断客户端发送的用户名和密码是否正确
			if ((user.getName().equals(myServerSocket.getName()))   
					&&  (user.getPassword().equals(myServerSocket.getPassword()))) { //正确时
				System.out.println("存在该用户,登录成功!");
				biw.write("欢迎你,登录成功!");
			}else {  //不正确时
				System.out.println("对不起,没有该用户,已通知客户端登录失败!");
				biw.write("对不起,没有该用户,登录失败!");
			}
			
			//3.关闭所有流
			biw.close();
			outputStream.close();
			inputStream.close();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
}


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Scanner;

/**
 * 客户端类
 * @author suixin
 *
 */
public class MySocket {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		try {
			//1.创建客户端对象
			Socket socket = new Socket("localhost", 8888);
			
			//2.打开输出流发送登录信息给服务器
			ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
			System.out.print("请输入用户名:");
			String userName = scanner.nextLine();
			System.out.print("请输入密码:");
			String password = scanner.nextLine();
			Guest guest = new Guest(userName, password);
			objectOutputStream.writeObject(guest);  //把User对象序列化发送服务器
			socket.shutdownOutput();  //禁用输出流
			
			
			//3.打开输入流读取服务器发送的反馈
			InputStream inputStream  = socket.getInputStream();
			BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
			System.out.println("我是客户端,服务器的响应为:"+bufferedReader.readLine());
			
			//4.关闭所有流
			bufferedReader.close();
			inputStream.close();
			objectOutputStream.close();
			socket.close();
			scanner.close();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}

}


import java.io.Serializable;

/**
 * 用户类
 * @author suixin
 *
 */
public class Guest implements Serializable{

	private String name;  //用户名
	
	private String password; //密码

	public Guest(String name, String password) {
		super();
		this.name = name;
		this.password = password;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@Override
	public String toString() {
		return "用户名:" + name + ", 密码:" + password;
	}

	
}

猜你喜欢

转载自blog.csdn.net/suixincaesar/article/details/80458048