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; } }