Springboot+TCP監(jiān)聽(tīng)服務(wù)器搭建過(guò)程圖解
最近從eclipese轉(zhuǎn)到idea,也從SpringMVC轉(zhuǎn)到Springboot,重新搭建了一個(gè)基于Springboot的TCP監(jiān)聽(tīng)。話不多說(shuō),直接上圖。
這邊是監(jiān)聽(tīng)的文件夾,其中,EchoThread是處理上傳信息的線程,SocketPool是用來(lái)存放socket的,SpringListener是隨項(xiàng)目啟動(dòng)的TCP監(jiān)聽(tīng)程序。
1.先來(lái)說(shuō)說(shuō)這個(gè)SpringListener
首先要做的第一點(diǎn)就是監(jiān)聽(tīng)隨項(xiàng)目啟動(dòng),springboot提供了兩種方案,第一種就是像這樣直接繼承CommandLineRunner,還有另外一種嘛,我也沒(méi)用過(guò),這里就多說(shuō)了。
隨項(xiàng)目啟動(dòng)后,要做的就是監(jiān)聽(tīng)端口了,和所有的tcp監(jiān)聽(tīng)一樣,對(duì)著指定的端口直接new一個(gè)sever,然后while循環(huán)監(jiān)聽(tīng),把監(jiān)聽(tīng)到的socket直接拋給信息處理的線程去處理。唯一不同的是,這邊在傳遞的是時(shí)候,多傳了一個(gè)數(shù)據(jù)庫(kù)的接口。因?yàn)榻酉聛?lái)的線程類作為普通類是沒(méi)辦法實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)service層的調(diào)用(注:這邊其實(shí)是有辦法實(shí)現(xiàn)的,只不過(guò)實(shí)現(xiàn)起來(lái)比較麻煩,所以我這邊直接在監(jiān)聽(tīng)部分給了一個(gè)接口,比較省事。后續(xù)可能也會(huì)更方便的方案,之后再討論)。
線程處理也沒(méi)什么特別的,把socket和service拿過(guò)來(lái),循環(huán)監(jiān)聽(tīng),根據(jù)傳過(guò)來(lái)的唯一設(shè)備號(hào),再把socket捆綁到一起,放到SocketPool里面。
存放好之后,后續(xù)就可以在controller里面直接調(diào)用socket進(jìn)行交互。
異常直接關(guān)閉連接。
到此這篇關(guān)于Springboot+TCP監(jiān)聽(tīng)服務(wù)器搭建過(guò)程圖解的文章就介紹到這了,更多相關(guān)Springboot+TCP監(jiān)聽(tīng)服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?Boot的優(yōu)點(diǎn)及項(xiàng)目創(chuàng)建步驟詳解
這篇文章主要介紹了Spring?Boot的優(yōu)點(diǎn)及項(xiàng)目創(chuàng)建步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09解決springboot啟動(dòng)成功,但訪問(wèn)404的問(wèn)題
這篇文章主要介紹了解決springboot啟動(dòng)成功,但訪問(wèn)404的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07深入淺析Spring Security5中默認(rèn)密碼編碼器
這篇文章主要介紹了Spring Security5中默認(rèn)密碼編碼器,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05java byte數(shù)組與16進(jìn)制間相互轉(zhuǎn)換的示例
這篇文章主要介紹了java byte數(shù)組與16進(jìn)制間相互轉(zhuǎn)換的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-10-10java控制臺(tái)實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(集合版)
這篇文章主要為大家詳細(xì)介紹了java控制臺(tái)實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的集合版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04Java反射學(xué)習(xí) getClass()函數(shù)應(yīng)用
所謂反射,可以理解為在運(yùn)行時(shí)期獲取對(duì)象類型信息的操作,本文將詳細(xì)介紹,需要的朋友可以參考下2012-12-12Java多線程Callable和Future接口區(qū)別
這篇文章主要介紹了Java多線程Callable和Future接口區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04