socket多线程方式案例
生活随笔
收集整理的這篇文章主要介紹了
socket多线程方式案例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
記下來,方便以后查看
?
User類
1 package com.xujingyang.ThreadSocket; 2 3 import java.io.Serializable; 4 5 public class User implements Serializable { 6 private String name; 7 private int age; 8 9 public String getName() { 10 return name; 11 } 12 13 public void setName(String name) { 14 this.name = name; 15 } 16 17 public int getAge() { 18 return age; 19 } 20 21 public void setAge(int age) { 22 this.age = age; 23 } 24 25 public User(String name, int age) { 26 super(); 27 this.name = name; 28 this.age = age; 29 } 30 31 public User() { 32 } 33 34 @Override 35 public int hashCode() { 36 final int prime = 31; 37 int result = 1; 38 result = prime * result + age; 39 result = prime * result + ((name == null) ? 0 : name.hashCode()); 40 return result; 41 } 42 43 @Override 44 public boolean equals(Object obj) { 45 if (this == obj) 46 return true; 47 if (obj == null) 48 return false; 49 if (getClass() != obj.getClass()) 50 return false; 51 User other = (User) obj; 52 if (age != other.age) 53 return false; 54 if (name == null) { 55 if (other.name != null) 56 return false; 57 } else if (!name.equals(other.name)) 58 return false; 59 return true; 60 } 61 62 @Override 63 public String toString() { 64 return "User [name=" + name + ", age=" + age + "]"; 65 } 66 } View Code?
客戶端類
package com.xujingyang.ThreadSocket;import java.io.InputStream; import java.io.ObjectOutputStream; import java.net.Socket;public class Client {public static void main(String[] args) throws Exception {Socket socket=new Socket("localhost", 9999);//監(jiān)聽端口 ObjectOutputStream out=new ObjectOutputStream(socket.getOutputStream());//包裝對象流 out.writeObject(new User("小明", 21));//寫入對象socket.shutdownOutput();//關(guān)閉流的占用//獲取服務(wù)器發(fā)過來的消息InputStream in = socket.getInputStream();byte[] b=new byte[1024];in.read(b);System.out.println(new String(b,0,b.length));//關(guān)閉流 in.close();out.close();socket.close();} } View Code服務(wù)器類
package com.xujingyang.ThreadSocket;import java.net.ServerSocket; import java.net.Socket;public class Server {public static void main(String[] args) throws Exception {ServerSocket socket=new ServerSocket(9999);//監(jiān)聽端口//循環(huán)監(jiān)聽接收各個客戶端連接while (true) {Socket client = socket.accept();//開啟多線程接受客戶端信息ThreadServer ts=new ThreadServer(client);new Thread(ts).start();}} } View Code?
服務(wù)器多線程接收類
package com.xujingyang.ThreadSocket;import java.io.IOException; import java.io.ObjectInputStream; import java.io.OutputStream; import java.net.Socket;/*** 多線程接受用戶登陸,把客戶端連接對象傳入作為成員變量* @author 徐景洋*/ public class ThreadServer implements Runnable {private Socket client;public ThreadServer(Socket client) {this.client=client;}@Overridepublic void run() {try {//包裝對象接收流ObjectInputStream in=new ObjectInputStream(client.getInputStream());User user = (User) in.readObject();//讀取對象//比較是否符合標(biāo)準(zhǔn).符合回答成功,否則失敗OutputStream out = client.getOutputStream();if((new User("小明",21)).equals(user)){out.write("登陸成功".getBytes());System.out.println(user);}else{out.write("登陸失敗".getBytes());}client.shutdownOutput();out.close();in.close();client.close();} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}}} View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/xujingyang/p/6591761.html
總結(jié)
以上是生活随笔為你收集整理的socket多线程方式案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android:日常学习笔记(6)——探
- 下一篇: thinkphp5如何使用layout