日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

socket多线程方式案例

發布時間:2024/4/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket多线程方式案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

記下來,方便以后查看

?

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);//監聽端口 ObjectOutputStream out=new ObjectOutputStream(socket.getOutputStream());//包裝對象流 out.writeObject(new User("小明", 21));//寫入對象socket.shutdownOutput();//關閉流的占用//獲取服務器發過來的消息InputStream in = socket.getInputStream();byte[] b=new byte[1024];in.read(b);System.out.println(new String(b,0,b.length));//關閉流 in.close();out.close();socket.close();} } View Code

服務器類

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);//監聽端口//循環監聽接收各個客戶端連接while (true) {Socket client = socket.accept();//開啟多線程接受客戶端信息ThreadServer ts=new ThreadServer(client);new Thread(ts).start();}} } View Code

?

服務器多線程接收類

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();//讀取對象//比較是否符合標準.符合回答成功,否則失敗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

?

轉載于:https://www.cnblogs.com/xujingyang/p/6591761.html

總結

以上是生活随笔為你收集整理的socket多线程方式案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。