Springboot+TCP監(jiān)聽服務器搭建過程圖解
最近從eclipese轉(zhuǎn)到idea,也從SpringMVC轉(zhuǎn)到Springboot,重新搭建了一個基于Springboot的TCP監(jiān)聽。話不多說,直接上圖。

這邊是監(jiān)聽的文件夾,其中,EchoThread是處理上傳信息的線程,SocketPool是用來存放socket的,SpringListener是隨項目啟動的TCP監(jiān)聽程序。
1.先來說說這個SpringListener

首先要做的第一點就是監(jiān)聽隨項目啟動,springboot提供了兩種方案,第一種就是像這樣直接繼承CommandLineRunner,還有另外一種嘛,我也沒用過,這里就多說了。
隨項目啟動后,要做的就是監(jiān)聽端口了,和所有的tcp監(jiān)聽一樣,對著指定的端口直接new一個sever,然后while循環(huán)監(jiān)聽,把監(jiān)聽到的socket直接拋給信息處理的線程去處理。唯一不同的是,這邊在傳遞的是時候,多傳了一個數(shù)據(jù)庫的接口。因為接下來的線程類作為普通類是沒辦法實現(xiàn)對數(shù)據(jù)庫service層的調(diào)用(注:這邊其實是有辦法實現(xiàn)的,只不過實現(xiàn)起來比較麻煩,所以我這邊直接在監(jiān)聽部分給了一個接口,比較省事。后續(xù)可能也會更方便的方案,之后再討論)。

線程處理也沒什么特別的,把socket和service拿過來,循環(huán)監(jiān)聽,根據(jù)傳過來的唯一設備號,再把socket捆綁到一起,放到SocketPool里面。


存放好之后,后續(xù)就可以在controller里面直接調(diào)用socket進行交互。

異常直接關閉連接。
到此這篇關于Springboot+TCP監(jiān)聽服務器搭建過程圖解的文章就介紹到這了,更多相關Springboot+TCP監(jiān)聽服務器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot+Hibernate實現(xiàn)自定義數(shù)據(jù)驗證及異常處理
這篇文章主要為大家介紹了SpringBoot如何整合Hibernate自定義數(shù)據(jù)驗證及多種方式異常處理,文中的示例代碼講解詳細,感興趣的可以了解一下2022-04-04
Springboot實現(xiàn)給前端返回一個tree結(jié)構(gòu)方法
這篇文章主要介紹了SpringBoot返回給前端一個tree結(jié)構(gòu)的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
SpringBoot+SseEmitter和Vue3+EventSource實現(xiàn)實時數(shù)據(jù)推送
本文主要介紹了SpringBoot+SseEmitter和Vue3+EventSource實現(xiàn)實時數(shù)據(jù)推送,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-03-03
501 Command "HELO" requires an argument問題的解決方法
換一個windows服務器,發(fā)現(xiàn)就沒這樣的問題,僅在一臺Linux服務器上可以重現(xiàn),直觀感覺就是這臺Linux服務器某些配置有問題2013-08-08
MyBatis學習教程(四)-如何快速解決字段名與實體類屬性名不相同的沖突問題
我們經(jīng)常會遇到表中的字段名和表對應實體類的屬性名稱不一定都是完全相同的情況,如何解決呢?下面腳本之家小編給大家介紹MyBatis學習教程(四)-如何快速解決字段名與實體類屬性名不相同的沖突問題,一起學習吧2016-05-05

