報錯顯示:
C:\Users\wenjrg\Desktop\2019.5.14>java ClickTest
Exception in thread "main" java.net.UnknownHostException: a
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
at java.net.InetAddress.getAllByName(InetAddress.java:1192)
at java.net.InetAddress.getAllByName(InetAddress.java:1126)
at java.net.InetAddress.getByName(InetAddress.java:1076)
at ClickTest.main(ClickTest.java:11)
用Socket實現簡單賬號密碼登錄
1. 實現客戶端
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 import java.io.PrintWriter; 5 import java.net.*; 6 7 public class ClickTest { 8 //模擬用戶登錄 9 public static void main(String[] args) throws IOException { 10 //創建socket對象 11 Socket s=new Socket(InetAddress.getByName("127.0.0.1"),8888); 12 //Socket s=new Socket("itheima",8888); 13 //獲取用戶名和密碼 14 BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 15 System.out.println("請輸入用戶名:"); 16 String username=br.readLine(); 17 System.out.println("請輸入密碼:"); 18 String password=br.readLine(); 19 //獲取輸出流對象(換行) 20 PrintWriter out=new PrintWriter(s.getOutputStream(),true); 21 //寫出數據 22 out.println(username); 23 out.println(password); 24 //獲取輸入流對象 25 BufferedReader serverBr=new BufferedReader(new InputStreamReader(s.getInputStream())); 26 //獲取服務器返回的數據 27 String result=serverBr.readLine(); 28 System.out.println(result); 29 //釋放 30 s.close(); 31 32 } 33 34 }
2.服務端
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 import java.io.PrintWriter; 5 import java.net.ServerSocket; 6 import java.net.Socket; 7 8 public class ServerTest { 9 10 public static void main(String[] args) throws IOException { 11 //創建服務器端socket對象 12 ServerSocket ss=new ServerSocket(8888); 13 //監聽 14 Socket s=ss.accept(); 15 //獲取輸入流對象 16 BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream())); 17 //判斷用戶名和密碼是否正確 18 String username=br.readLine(); 19 String password=br.readLine(); 20 //返回判斷信息 21 boolean flag=false; 22 if("a".equals(username)&&"1234".equals(password)){ 23 flag=true; 24 } 25 PrintWriter out=new PrintWriter(s.getOutputStream(),true); 26 27 if(flag){ 28 out.println("登陸成功"); 29 }else{ 30 out.println("登錄失敗"); 31 } 32 //釋放資源 33 s.close(); 34 //ss.close() 服務器不關閉 35 36 } 37 38 }