Ⅰ 怎麼用TCP協議通過外網連接伺服器
首先你要明白路由是不是共享式NAT上網的,也就是說router port nat出去的數據是一直堆疊或者持續變動的,而不做埠映射基本沒有實現的可能!
當然如果是靜態NAT,那麼直接做靜態NAT就可以了!
如灰鴿子,是直接通過本地服務端(中灰鴿子端)連接廣域網客戶端(控制端),然後服務端和建立的聯系。如通過80埠出數據,穿透防火牆等等。
你可以嘗試修改數據包出去的port,同時在兩個端進行修改!
-------------
抓取到數據包的時候注意地址段,關鍵在於讓路由到router nat到數據包的時候,能找到你的主機A或者W。
你可以參照一些三層更新之類的軟體。
有通過路由器,那就在路由器中設置埠映射,要求是電腦在路由器中獲取一個固定的內網IP。由於家用寬頻一般禁用了80和21這些常用埠,所以需要的是通過外網訪問時,埠就不能是被禁用的埠,另外,家用寬頻都是48小時更換一次IP,所以你就需要DDNS,比如花生殼動態域名。
已經設置的動態域名,如:dongtai.ddns.net
設置埠映射,需要通過遠程鏈接訪問家裡的計算機(10.0.1.201),則在路由器中設置埠映射為遠程訪問埠(如:3390),目標計算機IP(10.0.1.201),目標計算機埠(3389,3389是遠程桌面的埠)。最後你通過其他計算機遠程桌面家裡的電腦的時候,就只需要在遠程桌面窗口輸入:dongtai.ddns.net:3390就可以了
最重要的是你要有一個公網IP。
可能邏輯上有點混亂,對於映射,不同的路由器設置方式都是大致相同的,具體的那就自己查查自己的路由器怎麼設置咯。
Ⅱ C#TCP非同步伺服器和客戶端咋連接
TCP伺服器端的客戶端使用的方法不一樣,伺服器被叫,客戶端主叫。伺服器程序,設定一個埠用於客戶端呼叫連接,聲明一個socket綁定到這個埠,偵聽客戶端呼叫即可。客戶端聲明一個socket,通過客戶端socket對伺服器指定埠發出連接請求(主叫),伺服器相應此連接請求,建立連接,然後就可以互相通訊了。
伺服器和客戶端,就是在主叫與被叫上有區別,建立連接後,數據的收發都是一樣的。