1. 程式人生 > >簡單的TCP編程2

簡單的TCP編程2

import -- args serve turn 應該 功能 display cli

加入實體類User編程:

LoginServer.java:

技術分享圖片
 1 package tcp1;
 2 
 3 import java.io.DataInputStream;
 4 import java.io.DataOutputStream;
 5 import java.io.FileInputStream;
 6 import java.io.IOException;
 7 import java.io.InputStream;
 8 import java.io.ObjectInputStream;
 9 import java.net.ServerSocket;
10 import
java.net.Socket; 11 12 /** 13 * 登錄的服務器 14 * @author superdrew 15 * TCP 登錄 16 * 功能:用戶在客戶端輸入用戶名和密碼提交給服務器,服務器接收並處理,處理完後給客戶端一個返回信息 17 * 客戶端接口服務器的反饋消息並輸出 18 * 問題分解1.先做一個單向通道,用戶輸入用戶名和密碼,服務器接收並輸出 19 * 2.雙向通道,服務器進行處理,處理完反饋一個信息給客戶端,客戶端接收並輸出 20 * 采用對象流傳輸數據 21 *
22 * 缺點:服務器處理一次用戶請求之後,就關閉了 23 * 應該是服務器一直監聽,可以處理多個用戶的請求 24 */ 25 public class LoginServer { 26 public static void main(String[] args) throws IOException, ClassNotFoundException { 27 //1.創建一個serversocket 創建服務 28 ServerSocket serverSocket = new ServerSocket(8888);//
端口 8888 IP地址是本機 29 //2.使用 serversocket 監聽 socket 套接字 30 Socket socket = serverSocket.accept(); 31 32 //3.接收用戶請求,並處理 33 //InputStream is = new FileInputStream("d:/b.txt");從文件讀取 34 InputStream is = socket.getInputStream(); 35 ObjectInputStream ois = new ObjectInputStream(is); 36 User user = (User)ois.readObject();//向下轉型 37 38 //4.給客戶端反饋一個消息 39 DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); 40 if("drew".equals(user.getName()) && "123".equals(user.getPassword())){ 41 dos.writeUTF("登錄成功!--Welcome to here."); 42 }else{ 43 dos.writeUTF("登錄失敗,請重新輸入用戶名和密碼!"); 44 } 45 System.out.println(user); 46 //5.關閉資源 --關閉的順序有關系嗎? 47 dos.close(); 48 ois.close(); 49 socket.close(); 50 serverSocket.close(); 51 } 52 }
LoginServer.java

LoginClient.java:

技術分享圖片
 1 package tcp1;
 2 
 3 import java.io.DataInputStream;
 4 import java.io.DataOutputStream;
 5 import java.io.IOException;
 6 import java.io.ObjectOutputStream;
 7 import java.io.OutputStream;
 8 import java.net.InetAddress;
 9 import java.net.Socket;
10 import java.net.UnknownHostException;
11 import java.util.Scanner;
12 
13 /**
14  * 登錄的客戶端
15  * @author superdrew
16  *
17  */
18 public class LoginClient {
19     public static void main(String[] args) throws UnknownHostException, IOException {
20         //1.創建一個socket  連接服務器
21         Socket socket = new Socket(InetAddress.getLocalHost(), 8888);//必須要知道服務器IP和端口號
22         
23         //2.通過 socket 發送數據給服務器
24         //OutputStream os = new FileOutputStream("d:/b.txt");輸出到文件
25         //發送對象到服務器
26         Scanner sc = new Scanner(System.in);
27         System.out.println("請輸入用戶名:");
28         String name = sc.nextLine();
29         System.out.println("請輸入密碼:");
30         String password= sc.nextLine();
31         User user = new User(name,password);
32         
33         OutputStream os = socket.getOutputStream();
34         ObjectOutputStream oos = new ObjectOutputStream(os);
35         oos.writeObject(user);
36         
37         //3.接收服務器返回的消息
38         DataInputStream dis = new DataInputStream(socket.getInputStream());
39         String result = dis.readUTF();
40         System.out.println("服務器返回的消息:"+result);
41         
42         //4.關閉資源
43         dis.close();
44         oos.close();
45         socket.close();
46     }
47 }
LoginClient.java

實體類User.java:

技術分享圖片
 1 package tcp1;
 2 
 3 import java.io.Serializable;
 4 
 5 public class User implements Serializable{
 6 
 7     private static final long serialVersionUID = 4624000778154303345L;
 8     private String name;
 9     private String password;
10     public String getName() {
11         return name;
12     }
13     public void setName(String name) {
14         this.name = name;
15     }
16     public String getPassword() {
17         return password;
18     }
19     public void setPassword(String password) {
20         this.password = password;
21     }
22     public User(String name, String password) {
23         super();
24         this.name = name;
25         this.password = password;
26     }
27     public User() {
28         super();
29     }
30     @Override
31     public String toString() {
32         return "User [name=" + name + ", password=" + password + "]";
33     }
34     
35     
36 }
User.java
首先開啟運行服務LoginService.java,然後開啟客戶端LoginClient.java,輸入用戶名drew,輸入密碼123;看看結果展示:

技術分享圖片技術分享圖片技術分享圖片

簡單的TCP編程2