Ⅰ 一個TCP埠怎麼同時連接多個伺服器
一個埠可以同時進行多個聯接,這裡面有多個模型可供選擇,最好的模型IOCP模型。你還是應該找些書來看一下。
Ⅱ 怎麼用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。
可能邏輯上有點混亂,對於映射,不同的路由器設置方式都是大致相同的,具體的那就自己查查自己的路由器怎麼設置咯。
Ⅲ 怎樣在自己電腦上建立一個TCP伺服器
首先需要在電腦上搭建伺服器,關於網上好多按步驟安裝apache,sql,phpmyadmin的方法復雜而且沒有必要,這里推薦wamp這樣的一個集成軟體,安裝非常簡單,一路點擊next,apache+sql+phpmyadmin的環境一鍵搭好。
在網路中搜索Wamp下載,直接下載就行。下載完wamp進行安裝,一路點擊next,裝在c:\wamp下,最後install完成.
在瀏覽器輸入localhost,出現以下頁面說明安裝成功了。現在伺服器和php環境算是搭好了。此時在桌面右下角任務欄中會有wamp的圖標,點擊會有下圖顯示,www是網站頁面根目錄,localhost是網站默認主頁,點擊phpmyadmin可以進入資料庫管理界面.
現在網站只能在PC上顯示,如何能把網站放到互聯網上讓朋友也欣賞一下。這時就需要一款叫花生殼的軟體,提供動態的域名映射.
下載網址如下:http://hsk.oray.com/download/#type=windows|lan
下載完軟體按步驟安裝即可,這時候需要注冊一下花生殼會員,注冊時按網頁提示的步驟即可,用身份證注冊可以獲得一個免費域名。用注冊的賬號密碼登陸軟體。會出現以下界面。這里的網址是申請的免費域名。
在域名上右鍵,選擇新花生殼管理,填寫應用名稱,這個可以隨便填,內網主機為本機內網的ip地址,這時需要查看以下,win+R在cmd中輸入,ipconfig/all,
可以看到ipv4地址,填寫即可。埠為80埠。
同時,現在需要設置一下路由器。在瀏覽器輸入192.168.1.1。輸入路由器用戶名和密碼,一般都為admin。進入路由器界面。需要設置三個地方,首先是動態DNS,選擇服務商為花生殼,填寫用戶名密碼,驗證保存。然後是轉發規則中的虛擬伺服器,添加新條目,埠80,ip地址為內網ip。最後是,DMZ主機,設置開啟,ip為內網本機ip。
現在設置基本完成,這時就可以測試了。注意,要把防火牆關閉,否則外網還是訪問不了本機的網站。在控制面板中把防火牆關閉。現在可以寫一段html代碼,命名為index.html(注意此時先把index.php放到別的文件夾)放入wamp\www目錄中,來測試訪問。
最後,在瀏覽器輸入花生殼域名,看看是不是就能訪問了。同時也可以把自域名發送給朋友,讓他們幫測試一下。
Ⅳ 單機如何實現百萬並發TCP連接
一開始我無法理解,單機怎麼可能實現百萬並發連接,因為系統可用埠數只有:65535 - 1024 = 64511,每個TCP連接需要佔用一個獨立的埠,那最多也只能做到6W多並發連接。然而我忽視了一個很基本的問題,埠號在同一個IP下不能重復,但我們可以給一個網卡綁定多個IP地址,如果單機要主動發起100萬並發連接,我們最少需要使用17個IP地址。
TCP伺服器監聽在指定埠接收客戶端連接後,創建一個新的socket用於同客戶端進行讀寫數據,但該socket並不需要也不會綁定一個新的埠,所以對於TCP伺服器來說,不存在埠不夠用的情況,TCP伺服器能夠保持多少個並發連接取決於伺服器性能、內存大小、帶寬大小以及伺服器端設置(例如:進程能打開的文件數等)。以100W連接數為例,所需要總內存大小大約為:1,000,000 20K = 20G, 廣播一個1KB的消息需要佔用的帶寬:1,000,000 1K = 1000M,所需打開文件描述符1,000,000個。
對於TCP伺服器連接數壓力測試來說,瓶頸在客戶端,因為每個客戶端要連接到TCP服務端需要使用一個本地埠,而對於一個IP地址來說,埠范圍就是:0-65536,其中還要一些埠被系統或其他程序使用。所以從一台主機單個IP上發起同TCP伺服器的連接數理論最大值為65535,當然我們可以給該主機綁定N個IP地址,同時從多個IP發起連接,所以理論上客戶端可以發起的連接數為:IP數*65535,這時客戶端的CPU、內存和帶寬以及文件句柄資源就是限制。
Ⅳ 怎麼用多線程實現TCP並行伺服器,服務
伺服器監聽埠 做個無限循環 接到一個連接就創建一個通道線程,並將通道線程存儲到一個list集合中
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List; /* * 4.用socket通訊寫出多個客戶端和一個伺服器端的通訊, * 要求客戶發送數據後能夠回顯相同的數據(回顯功能)(實用TCP方式)。 */public class Test4Server { // 主入口 public static void main(String[] args) throws IOException { scoketServer(); } // 開啟的tcp8888監聽埠 public static void scoketServer() throws IOException { ServerSocket server = new ServerSocket(8888); while (true) { // 未連通前線程阻塞,連通後開啟一個socket通道線程後繼續監聽8888埠 Socket socket = server.accept(); System.out.println(socket.getInetAddress().getHostAddress() + "連接進入"); new SocketThread(socket).start(); } } } // 一個伺服器埠中監聽多個客服端通道線程class SocketThread extends Thread {// 所有通道寫入流的集合 private static List<PrintWriter> list =new ArrayList<PrintWriter>(); private BufferedReader bufferedReader; private PrintWriter printWriter; public SocketThread(Socket socket) throws IOException { this.bufferedReader = new BufferedReader(new InputStreamReader(socket .getInputStream())); this.printWriter = new PrintWriter(socket.getOutputStream()); list.add(printWriter); } @Override public void run() { String string = null; while (true) { try { // 伺服器在通道中讀到的信息回顯給客服端 string = bufferedReader.readLine(); System.out.println("客服端信息:" + string); for(PrintWriter printWriter:list ){ printWriter.write("伺服器回顯:" + string + "\r\n"); printWriter.flush(); } } catch (IOException e) { } } }}
Ⅵ TCP通訊怎麼連接到外網的伺服器
你好,很高興為你解答!
根據你的描述,只要你的伺服器IP地址是公網的,就可以直接連,伺服器一般放置在公網上,有固定的IP地址。
希望我的回答可以幫助你,安徽電信祝您生活愉快。