ServerSocket和Socket的實際應用

2021-10-18 01:31:34 字數 2913 閱讀 8484

客戶端由三個類構成,既然是聊天室,單獨用乙個類去建立視窗,另外乙個類處理網路通訊,再單獨弄乙個登陸的視窗總之就是,盡量做到乙個類只去處理一件事情或者一類事情。

通訊類

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的內容之前,先要了解一下涉及到的一些異常型...