TCPServer TcpClient不同子網通訊

2021-04-12 12:17:10 字數 1341 閱讀 2958

我以前是用indy udp的,曾做成功乙個外網的遠端監控程式,現在準備改用indy tcp來做,現在遇到問題了,需要請求各位高手;

我以前udp做法

1/受控udpserver 開機啟動,在timer中定時主動向--固定ip伺服器 發資訊,讓固定ip伺服器得知 受控的ip及埠

2/然後,主控上線也用udpserver向-----固定ip伺服器 發資訊,讓固定ip伺服器得知 主控的ip,並且主控向伺服器索取受控的ip

3/連線,通過兩種方式

直連 主控------受控

反向 主控------固定ip服務(請伺服器讓受控連)-------受控--------主控

以前上面這些都做成功了,由於udp老丟包,即使加一些安全驗證**,也不方便,外網每次傳輸在多數情況下只能是1k/每次,30k大小的資料要傳30次,雖然每次傳輸都很快,但30次當中有一次丟包,資料就沒用了.所以我現在想改用tcp來做

tcp我現在只能做到

a子網被控tcpclient----->固定伺服器

b子網主控tcpclient----->固定伺服器

雙方的ip和自動對映埠都知道了,但全是tcpclietn控制項的埠

我現在如何用 主控的tcpclient 去連上被控中的tcpserver?

請高手幫忙?

---------------------------------

我昨天突然有一怪想法,請高手指點

就是用 子網被控機a的udpserver:prot8001------->固定ip udpclient 以得到隨機對映的10000埠,然後用主控tcpclient---------->受控ip:10000,而tcpserver的埠也是8001,tcpclient發來的連線請求肯定是讓8001的tcpserver來呼應,而不是8001的udpserver.

而我經過了測試

udp8001,tcp8001可以同時存在.

而按照上面udp打前陣的做法,tcpclient連10000,根本沒連上,

這證明8001埠,雖然埠數字相同,但他們是不同的資料通道,10000埠僅代表的是udp8001,而不是tcp8001,埠的對映也許分協議方式的,也許是8001表面上數字一樣,實際代表的不同數字,

這我也搞不清了,

我的想法是,有什麼辦法, 能使udp先代表tcpserver,開一條路,然後讓tcp去走

如不能,其他有沒有 tcp的server端 能發起式發資訊的控制項? 

-----------------------------

遠端監控專題群:29489381

不同子串行

難度 hard 備註 出自leetcode 題目描述 package 不同子串行 version 1.0 date 2020 8 3 16 28 題目描述 給定兩個字串s和t,求s有多少個不同的子串與t相同。s的子串定義為在s中任意去掉0個或者多個字元形成的串。子串可以不連續,但是相對位置不能變。比...

不同的子串行

leetcode 給定乙個字串 s 和乙個字串 t,計算在 s 的子串行中 t 出現的個數。乙個字串的乙個子串行是指,通過刪除一些 也可以不刪除 字元且不干擾剩餘字元相對位置所組成的新字串。例如,ace 是 abcde 的乙個子串行,而 aec 不是 題目資料保證答案符合 32 位帶符號整數範圍。示...

不同子串個數

字尾陣列在處理子串問題時往往有奇效,因為字尾的字首即是子串,而字尾陣列正是按照字首排序的字尾。回到本題。因為字尾的字首是子串,則一條字尾與其它所有字尾的lcp的最長長度,即是這條字尾的字首子串中所有被重複計數的串的數量。我們掏出求得的 ht 陣列。初學sa時大家一定接觸過乙個重要的 text 即 o...