国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java基于C/S結構實現多線程聊天室

java基于C/S結構實現多線程聊天室

2021-06-30 15:04xiaozhuaixifu Java教程

這篇文章主要為大家詳細介紹了java基于C/S結構實現多線程聊天室,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java基于c/s結構實現多線程聊天室的具體代碼,供大家參考,具體內容如下

主要實現的功能:

服務器端建立serversocket阻塞監聽來自客戶端的socket連接,并為之開辟一個新的線程

讀取來自該連接的數據,廣播每一個客戶端數據,這里簡單地使用一個鏈表保存所有來自客戶端的所有socket連接

客戶端連接上服務器端后主要有兩個線程在工作:

主線程:不斷獲取鍵盤的輸入并寫入該socket中傳輸給服務器

副線程:不斷從服務器socket流中讀取傳來的數據,打印到屏幕上。

服務器端代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import java.io.bufferedreader;
import java.io.ioexception;
import java.io.inputstreamreader;
import java.io.printstream;
import java.net.socket;
import java.net.serversocket;
import java.util.arraylist;
import javax.swing.joptionpane;
 
public class myserver {
 
 public static arraylist<socket> socketlist = new arraylist<socket>();
 private static string port ;
 public static void main(string[] args) throws ioexception
 {
 //彈出一個對話框輸入端口號
 port = joptionpane.showinputdialog("input the port number: ");
 int serverport = new integer(port).intvalue();
 
 serversocket ss = new serversocket(serverport);
 system.out.println("server is initializating...");
 while(true)
 {
 system.out.println("server is waiting...");
 
 //此處將阻塞監聽
 socket s = ss.accept();
 system.out.println("listening from: " + s.getinetaddress());
 socketlist.add(s);
 new thread(new serverthread(s)).start();
 }
 }
 
}
class serverthread implements runnable
{
 socket s = null;
 bufferedreader br = null;
 public serverthread(socket s) throws ioexception
 {
 this.s = s;
 br = new bufferedreader(new inputstreamreader(s.getinputstream()));
 }
 public void run()
 {
 try
 {
 string content = null;
 while( (content = readfromclient()) != null )
 {
 //播報每個客戶端數據
 for(socket s : myserver.socketlist)
 {
 printstream ps = new printstream(s.getoutputstream());
 ps.println(content);
 }
 }
 }
 catch (ioexception io)
 {
 io.printstacktrace();
 }
 }
 private string readfromclient()
 {
 try
 {
 return br.readline();
 }
 catch (ioexception io)
 {
 myserver.socketlist.remove(s);
 system.out.println(s.getinetaddress() + " is disconnecting...");
 }
 return null;
 }
 
}

客戶端代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.net.socket;
import java.io.bufferedreader;
import java.io.ioexception;
import java.io.inputstreamreader;
import java.io.printstream;
 
public class myclient {
 
 public static void main(string[] args) throws exception
 {
 socket s = new socket("192.168.1.164", 30000);
 
 // new thread to read content from server.
 new thread(new clientthread(s)).start();
 
 printstream ps = new printstream(s.getoutputstream());
 string line = null;
 bufferedreader br = new bufferedreader(new inputstreamreader(system.in));
 while((line = br.readline()) != null)
 {
 ps.println(line);
 }
 }
}
class clientthread implements runnable
{
 private socket s = null;
 bufferedreader br = null;
 public clientthread(socket s) throws ioexception
 {
 this.s = s;
 br = new bufferedreader(new inputstreamreader(s.getinputstream()));
 }
 public void run()
 {
 try
 {
 string content = null;
 while( (content = br.readline()) != null)
 {
 system.out.println(content);
 }
 }
 catch (ioexception io)
 {
 io.printstacktrace();
 }
 }
}

后期開發:

上面程序功能很簡單,沒有記錄客戶信息,考慮添加功能如下:(多人聊天室)

客戶端發來的信息必須添加特殊標識,用于區別 登陸,私聊,公聊 三種,如果是登陸,則服務器端應該有一個map來保存用戶名和對應輸出流中間的關系,用來處理用戶名重復的情況,還有如果是私聊,必須知道從客戶端發來消息的用戶名和將要發給哪一個用戶的特殊標識,考慮在輸入字符串里加入特殊標識符。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/xiaozhuaixifu/article/details/13006403

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一区二区三区 | 国产精品www | 久久99精品国产99久久6尤 | 中文字幕综合在线 | 亚洲成人精品在线观看 | 992人人tv香蕉国产精品 | 国产精品精品久久久 | 亚洲精品www久久久久久广东 | 日日操夜夜操天天操 | 自拍偷拍亚洲一区 | 亚洲国产精品99久久久久久久久 | 看片久久| 99热在线播放 | 欧美日韩精品电影 | 久久久精品国产 | 奇米在线视频 | 国产精品久久久久久久久久久久久久 | 久久久久久久久久影院 | 免费激情 | 黄色免费观看 | 福利视频网址导航 | 激情国产| 成年网站在线观看 | 国产一区二区精品 | 免费一级片 | 国产精品视频免费观看 | 中文字幕一区二区三区乱码在线 | 欧美a区 | 久久精品亚洲精品 | 在线干 | 秋霞av亚洲一区二区三 | 99久久精品一区二区成人 | 可以免费看黄色的网站 | 久久www免费人成看片高清 | 国产精品视频入口 | 日本一区二区精品视频 | 成人网在线视频 | 这里只有精品国产 | 日韩视频精品在线 | 精品久草 | 福利片在线观看 |