您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)如何搭建Springboot+TCP監(jiān)聽服務(wù)器,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
最近從eclipese轉(zhuǎn)到idea,也從SpringMVC轉(zhuǎn)到Springboot,重新搭建了一個(gè)基于Springboot的TCP監(jiān)聽。話不多說,直接上圖。
這邊是監(jiān)聽的文件夾,其中,EchoThread是處理上傳信息的線程,SocketPool是用來存放socket的,SpringListener是隨項(xiàng)目啟動(dòng)的TCP監(jiān)聽程序。
1.先來說說這個(gè)SpringListener
首先要做的第一點(diǎn)就是監(jiān)聽隨項(xiàng)目啟動(dòng),springboot提供了兩種方案,第一種就是像這樣直接繼承CommandLineRunner,還有另外一種嘛,我也沒用過,這里就多說了。
隨項(xiàng)目啟動(dòng)后,要做的就是監(jiān)聽端口了,和所有的tcp監(jiān)聽一樣,對(duì)著指定的端口直接new一個(gè)sever,然后while循環(huán)監(jiān)聽,把監(jiān)聽到的socket直接拋給信息處理的線程去處理。唯一不同的是,這邊在傳遞的是時(shí)候,多傳了一個(gè)數(shù)據(jù)庫的接口。因?yàn)榻酉聛淼木€程類作為普通類是沒辦法實(shí)現(xiàn)對(duì)數(shù)據(jù)庫service層的調(diào)用(注:這邊其實(shí)是有辦法實(shí)現(xiàn)的,只不過實(shí)現(xiàn)起來比較麻煩,所以我這邊直接在監(jiān)聽部分給了一個(gè)接口,比較省事。后續(xù)可能也會(huì)更方便的方案,之后再討論)。
線程處理也沒什么特別的,把socket和service拿過來,循環(huán)監(jiān)聽,根據(jù)傳過來的唯一設(shè)備號(hào),再把socket捆綁到一起,放到SocketPool里面。
存放好之后,后續(xù)就可以在controller里面直接調(diào)用socket進(jìn)行交互。
異常直接關(guān)閉連接。
關(guān)于如何搭建Springboot+TCP監(jiān)聽服務(wù)器就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。