客戶端由三個類構成,既然是聊天室,單獨用乙個類去建立視窗,另外乙個類處理網路通訊,再單獨弄乙個登陸的視窗總之就是,盡量做到乙個類只去處理一件事情或者一類事情。
通訊類
public
class
socketdemo
extends
thread()
//判斷客戶機是否與伺服器連線上,用布林型做標記,置於視窗類中使用
public
boolean
isconnected()
catch
(unknownhostexception e)
catch
(ioexception e)
return
false;}
}//向伺服器傳送訊息的方法
public
void
senmessage
(string message)
catch
(ioexception e)}/*
* 2.先讀取資料
* 3.顯示到文字框中
* 4.自定義協議:文字訊息資料報:第乙個資料:位元組3(用來判斷是文字訊息)
* 第二個:int型,這次訊息的位元組長度
* 第三個:文字訊息的內容
*/public
void
run()}
catch
(ioexception e)}}
}
視窗類
//視窗的建立用到jframe這個類,直接去繼承它,便於使用其中的方法。對於窗體的建立不再做過多講解
public
class
chartroom
extends
jframe()
public
void
showui()
c.start()
;//啟動接收執行緒
system.out.
println
("客戶機已經啟動了執行緒來接收伺服器發來的訊息");
//匿名內部類,便於**維護
bt.addactionlistener
(new
actionlistener()
}});
}
登陸視窗
public
class
loginui
extends
jframe}}
);}public
static
void
main
(string[
] args)
}
至此,客戶端就已經建立完成了。接下來是伺服器端
二、伺服器
在開始寫**之前,先考慮一下伺服器和客戶機的不一樣的地方。1.伺服器中有乙個accept()方法來得到客戶機物件,而在沒有客戶機連線的時候,此方法會一直阻塞,所以將其放在乙個執行緒類中執行較為合適。2.伺服器會被客戶機連線,會被很多客戶機連線,這些客戶機物件應該儲存到乙個佇列中,方便後續的使用。3.再把傳送訊息和讀取訊息單獨放在乙個類中,便於維護
。所以,需要視窗類(roomui),開啟伺服器類(roomserver),資料交換類(serverthread),佇列類(tools)。
開啟伺服器類
public
class
roomserver
extends
thread
public
void
setserver
(int port)
}catch
(ioexception e)
}public
void
run(
)}
交換資料類
public
class
serverthread
extends
thread
catch
(ioexception e)
}//讀取從客戶機發來的訊息
public
void
readmessage()
}catch
(ioexception e)}}
//給客戶機傳送訊息
public
void
sendmessage
(string msa)
catch
(ioexception e)
}//訊息隨時會有,用執行緒來執行更為合適
public
void
run(
)}
佇列類
//往這個類裡面存連線上伺服器的客戶機物件
public
class
tools
//加了static修飾,可以直接呼叫,不用建立類的物件,
public
static arraylist
al =
newarraylist()
;public
static
void
casemsg
(string message)
}}
視窗類
public
class
roomui
extends
jframe}}
);}public
static
void
main
(string[
] args)
}
這樣乙個簡單的聊天室就搭建好了,只不過還有很多方面沒做好,比如:沒辦法點對點的傳送訊息,讀者可以自行完善,當然,我後續也會做出更新 Socket和ServerSocket學習筆記
對於即時類應用或者即時類的遊戲,http協議很多時候無法滿足於我們的需求。這會,socket對於我們來說就非常實用了。下面是本次學習的筆記。主要分異常型別 互動原理 socket serversocket 多執行緒這幾個方面闡述。異常型別 在了解socket的內容之前,先要了解一下涉及到的一些異常型...
Socket和ServerSocket學習筆記
對於即時類應用或者即時類的遊戲,http協議很多時候無法滿足於我們的需求。這會,socket對於我們來說就非常實用了。下面是本次學習的筆記。主要分異常型別 互動原理 socket serversocket 多執行緒這幾個方面闡述。異常型別 在了解socket的內容之前,先要了解一下涉及到的一些異常型...
Socket和ServerSocket學習筆記
對於即時類應用或者即時類的遊戲,http協議很多時候無法滿足於我們的需求。這會,socket對於我們來說就非常實用了。下面是本次學習的筆記。主要分異常型別 互動原理 socket serversocket 多執行緒這幾個方面闡述。異常型別 在了解socket的內容之前,先要了解一下涉及到的一些異常型...