導航:首頁 > 編程語言 > windowstcp服務端程序

windowstcp服務端程序

發布時間:2024-04-13 04:53:17

A. 怎樣修改windows伺服器中最大的tcp連接數

修改方法如下:

單擊「開始」/運行,輸入Regedit打開注冊表,定位到HKEY_LOCAL_下,修改的「TcpNumConnections」的鍵值,將之由10改為250,即設置TCP最大並發連接數為250。

B. 鎬庢牱淇鏀箇indows鏈嶅姟鍣ㄤ腑鏈澶х殑tcp榪炴帴鏁幫紵

鍦ㄥ仛鎬ц兘嫻嬭瘯嫻嬭瘯鏃跺欙紝濡傛灉琚嫻嬭瘯鐨勭郴緇熼〉闈㈠緢綆鍗曪紝騫朵笖鎬ц兘寰堝ソ錛岃繖鏍蜂細瀵艱嚧鍘嬪姏鏈哄緱tcp閾炬帴鏁頒笉澶熻屽艱嚧濡備笅閿欒錛
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Parameters\TcpTimedWaitDelay to 30
and HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Parameters\MaxUserPort to 65534
and rebooting the machine
See the readme.doc file for more information
閫氳繃鐧懼害鎼滅儲浠嬬粛鏈澶氱殑榪樻槸璁╀慨鏀筎imedWaitDelay 鍜孧axUserPort榪2涓鍊礆紝鍏朵腑鏄灝員imedWaitDelay淇鏀圭殑鐩稿瑰皬鐐癸紝鍙浠ユ牴鎹瀹為檯鎯呭喌鏉ュ畾錛
鍚屾椂灝哅axUserPort榪欎釜鍊間慨鏀瑰ぇ浜涳紝浣嗘槸淇鏀瑰畬騫墮噸鍚鏈哄櫒鍚庯紝璇ラ棶棰樹粛鐒跺瓨鍦錛岄氳繃澶氭柟鏌ヨ祫鏂欙紝鐒跺悗瀵逛竴浜涙敞鍐岃〃榪涜屼慨鏀癸細
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
TcpNumConnections = 0x00fffffe (Default = 16,777,214)
浠ヤ笂娉ㄥ唽琛ㄤ俊鎮閰嶇疆鍗曟満鐨勬渶澶у厑璁哥殑TCP榪炴帴鏁幫紝榛樿や負 16M銆傝繖涓鏁板肩湅浼煎緢澶э紝榪欎釜騫朵笉鏄闄愬埗鏈澶ц繛鎺ユ暟鐨勫敮涓鏉′歡錛岃繕鏈夊叾浠栨潯浠朵細闄愬埗鍒癟CP 榪炴帴鐨勬渶澶ц繛鎺ユ暟銆
鏈澶у姩鎬佺鍙f暟
TCP瀹㈡埛絝鍜屾湇鍔″櫒榪炴帴鏃訛紝瀹㈡埛絝蹇呴』鍒嗛厤涓涓鍔ㄦ佺鍙o紝榛樿ゆ儏鍐典笅榪欎釜鍔ㄦ佺鍙g殑鍒嗛厤鑼冨洿涓 1024-5000 錛屼篃灝辨槸璇撮粯璁ゆ儏鍐典笅錛屽㈡埛絝鏈澶氬彲浠ュ悓鏃跺彂璧3977 涓猄ocket 榪炴帴銆傛垜浠鍙浠ヤ慨鏀瑰備笅娉ㄥ唽琛ㄦ潵璋冩暣榪欎釜鍔ㄦ佺鍙g殑鑼冨洿
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxUserPort = 5000 (Default = 5000, Max = 65534)

鏈澶TCB 鏁伴噺

緋葷粺涓烘瘡涓猅CP 榪炴帴鍒嗛厤涓涓猅CP 鎺у埗鍧(TCP control block or TCB)錛岃繖涓鎺у埗鍧楃敤浜庣紦瀛楾CP榪炴帴鐨勪竴浜涘弬鏁幫紝姣忎釜TCB闇瑕佸垎閰 0.5 KB鐨刾agepool 鍜 0.5KB 鐨凬on-pagepool錛屼篃灝辮達紝姣忎釜TCP榪炴帴浼氬崰鐢 1KB 鐨勭郴緇熷唴瀛樸

緋葷粺鐨勬渶澶TCB鏁伴噺鐢卞備笅娉ㄥ唽琛ㄨ劇疆鍐沖畾
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxFreeTcbs = 2000 (Default = RAM dependent, but usual Pro = 1000, Srv=2000)
闈濻erver鐗堟湰錛孧axFreeTcbs 鐨勯粯璁ゅ間負1000 錛64M 浠ヤ笂鐗╃悊鍐呭瓨錛

Server 鐗堟湰錛岃繖涓鐨勯粯璁ゅ間負 2000銆

涔熷氨鏄璇達紝榛樿ゆ儏鍐典笅錛孲erver 鐗堟湰鏈澶氬悓鏃跺彲浠ュ緩絝嬪苟淇濇寔2000涓猅CP 榪炴帴銆
鏈澶TCB Hash table 鏁伴噺

TCB 鏄閫氳繃Hash table 鏉ョ$悊鐨勶紝涓嬮潰娉ㄥ唽琛ㄨ劇疆鍐沖畾浜嗚繖涓狧ash table 鐨勫ぇ灝

HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip \Parameters]
MaxHashTableSize = 512 (Default = 512, Range = 64-65536)

榪欎釜鍊兼寚鏄庡垎閰 pagepool 鍐呭瓨鐨勬暟閲忥紝涔熷氨鏄璇達紝濡傛灉MaxFreeTcbs = 1000 , 鍒 pagepool 鐨勫唴瀛樻暟閲忎負 500KB

閭d箞 MaxHashTableSize 搴斿ぇ浜 500 鎵嶈屻傝繖涓鏁伴噺瓚婂ぇ錛屽垯Hash table 鐨勫啑浣欏害灝辮秺楂橈紝姣忔″垎閰嶅拰鏌ユ壘 TCP 榪炴帴鐢ㄦ椂灝辮秺灝戙傝繖涓鍊煎繀欏繪槸2鐨勫籙錛屼笖鏈澶т負65536.

MaxUserPort = 65534 (Decimal)
MaxHashTableSize = 65536 (Decimal)
MaxFreeTcbs = 16000 (Decimal)

榪欓噷鎴戜滑鍙浠ョ湅鍒 MaxHashTableSize 琚閰嶇疆涓烘瘮MaxFreeTcbs 澶4鍊嶏紝榪欐牱鍙浠ュぇ澶у炲姞TCP寤虹珛鐨勯熷害銆

C. 怎麼修改伺服器埠

問題一:伺服器埠怎麼更改呢 詳細步驟如下:看能否對你有所幫助1、通過注冊表修改,打開「開始→運行」,輸入「regedit」,打開注冊表,進入以下路徑: [HKEY_LOCAL_MACHINE--SYSTEM CurrentControlSet--Control--Terminal Server Wds--rdpwd--Tds--tcp],看見PortNamber值了嗎?其默認值是3389,修改成所希望的埠即可,例如12345。 再打開[HKEY_LOCAL_MACHINE SYSTEM--CurrentContro1Set--Control--Tenninal Server--WinStations--RDP--Tcp],將PortNumber的值(默認是3389)修改成埠12345。 2、也可以採用諸如埠修改軟體實現,自己搜索一下。

問題二:如何修改windows伺服器登陸埠號 一般windows伺服器默認的遠程連接的埠號是3389,有時我們需要更改這個埠號。
警告 :注冊表編輯器使用不當可導致嚴重問題,可能需要重新安裝操作系統。Microsoft 不能保證您可以解決因注冊表編輯器使用不當而導致的問題。使用注冊表編輯器需要您自擔風險。
1、首先,登陸伺服器選擇系統桌面中的「開始」、「運行」命令,從彈出的系統運行框中,輸入字元串命令「 regedit 」,單擊「確定」按鈕後,打開本地工作站的系統注冊表編輯界面;
展開 HKEY_LOCAL_MACHINE 注冊表分支,從其後彈出的分支列表中依次選中
SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp
在 tcp 子鍵所對應的右側顯示區域中,我們會看到一個名為 PortNumber 的子鍵,這個子鍵其實就是用來定義遠程桌面埠號碼的,將該子鍵的數值設置成其他埠號碼,例如可以將其數值設置成「 9999 」
2、 完成數值修改操作後,我們再將滑鼠定位於注冊表分支
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
在RDP-Tcp子鍵所對應的右側顯示區域中,我們同樣會看到一個名為PortNumber的子鍵,把該子鍵的數值也要一並修改過來,例如這里我們也要將它的數值修改成「9999」
3、然後修改防火牆
從控制面板進入防火牆,然後點擊高級設置,入站規則-》新建規則-》規則類型-》埠-》下一步-》特定本地埠-》填寫你更改的埠-》確定
然後重啟就可以了。

問題三:如何修改伺服器遠程連接埠 伺服器租用後,如果使用默認的埠連接伺服器,有可能導致不安全。現在的黑客攻擊也有了專門針對伺服器默認遠程埠3389的攻擊,如果遇到這種情況,埠被攻擊,就會導致伺服器遠程連接不上,這個時候我們需要修改伺服器遠程連接的埠來避免這個情況的發生。
哪么如何修改伺服器遠程連接的埠呢。
windows系統伺服器修改伺服器遠程連接埠的方法:
windows系統遠程連接埠默認的是3389,windows下默認埠的修改分為兩大步驟
一、修改注冊表.
1、開始--運行--regedit
2、打開注冊表的HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/TERMINAL SERVER/WDS/RDPWD/TDS/TCP
右邊鍵值中 PortNumber這個值修改為需要修改的埠數.注意使用十進制(例 34678)
3、打開注冊表的HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/TERMINAL SERVER/WINSTATIONS/RDP-TCP/
右邊鍵值中 PortNumber 這個值修改為需要修改的埠數.注意使用十進制(例 34678)
4、埠修改完畢.重新啟動伺服器.設置生效.
5、這樣.使用3389遠程桌面連接連接的時候.
就應該填寫 IP:34678 即 ip 後面跟冒號和埠號. 例如202.103.0.117:34678
二、修改防火牆,打開所需的埠(例如打開埠34678)
做完這兩步之後。伺服器重啟後。遠程埠的修改就算完成了。以後請記得使用修改後的埠去連接伺服器,萬一埠忘記,就需要機房的工作人員把伺服器接上顯示器然後在本地登陸再修改這些埠設置來恢復了。因為涉及到要到機房接顯示器處理。因此可能影響的時間比較長。客戶需要牢牢記得伺服器遠程修改後的埠。避免出現這一問題

問題四:怎樣更改埠號 修改tomcat埠號的方法:
修改Server.xml文件,把8080埠改成80就可以了。
8080是Tomcat伺服器的默認的埠號。我們可以通過修改Tomcat伺服器的conf目錄下的主配置文件server.xml來更改.用記事本打開server.xml文件,找到如下部分:
以下為引用的內容:

將其中的port=8080更改為新的埠號即可,如將「8080」改為「9080」等。

問題五:如何進行伺服器埠的設置 為了保證伺服器的應用和安全,需要進行埠設置,使埠與提供的服務相匹配,並且要關閉不需要的埠。進行伺服器埠的設置,可以在操作系統中進行設置,也可以通過一些工具軟體進行設置。在系統中進行設置右擊網上鄰居圖標,選擇屬性命令,在彈出的對話框中選擇本地連接,單擊滑鼠右鍵選擇屬性,彈出本地連接屬性對話框,在此連接使用下列選定的組件區域選中Internet協議(TCP/IP),再單擊屬性按鈕,在彈出的Internet協議(TCP/IP)屬性對話框中單擊高級按鈕,又彈出一個TCP/IP屬性對話框,選擇選項選項卡,在可選的設置區域選擇TCP/IP篩選,單擊屬性按鈕,打開TCP/IP篩選對話框,,在其中添加需要開放的TCP,UDP埠即可。通過工具軟體進行設置在系統中設置埠很簡單,但還有更加簡單的方法,那就是使用設置埠的工具軟體。使用這類軟體的好處是設置操作簡單,同時還有日誌功能,例如使用PortBlocker軟體,這款軟體主要針對同時連接區域網和互聯網的用戶,當區域網伺服器與互聯網連接以後,管理員就有必要更加註意埠的設置。這款軟體專門檢測和攔截來自互聯網的通信,如果發現有任何連接未開放埠的通信請求,該軟體就會彈出窗口報告IP地址和要訪問的埠。

問題六:如何修改伺服器的3389埠 注冊表有2個地方需要修改:
第一處:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]
PortNumber值,默認是3389,修改成所希望的埠,比如1314
第二處:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
PortNumber值,默認是3389,修改成所希望的埠,比如1314
完後重啟伺服器 OK!!

問題七:如何更改linux伺服器埠號 linux伺服器有很多埠,不知道你要修改那些埠下面是安全類埠修改:
Linux伺服器安全之更改默認埠
原創內容,轉載請註明出處: myzhenai/post/1783 myzhenai/thread-16180-1-1
關鍵字: Kloxo-mr修改默認埠 更改Kloxo-mr 7777 7778埠 kloxo自定義埠 Linux修改ssh埠 Linux修改ftp埠 Centos修改ssh埠 Centos修改ftp埠 修改ssh默認22埠 修改FTP默認21埠 更改pureftpd默認埠 更改vsftpd默認埠 更改proftpd默認埠 更改SSH默認埠 更改FTP默認埠
Linux的安全性能相對於windows來說要高一些,但這並不代表不會受到攻擊功侵入,你只要留意看看/var/log/里的各種日誌就會發現每天都會有大量的ip在掃描你的ssh,ftp等埠.所以為了更加安全,我們可以將這些默認的埠修改為自定義的埠.我們先來說ssh和ftp.
SSH
# vi /etc/ssh/sshd_config
Port **
**即是你需要的埠號,建議修改個大點的埠,以免和其他埠相沖突.
vsftpd
# find / -name vsftpd.conf
# vi /****/vsftpd.conf
/****/是vsftpd.conf所在目錄,在vsftpd.conf中增加 listen_port=*** 最後這個星號這里是自定義的埠號.
proftpd
# vi /etc/proftpd.conf
Port 21
Port ***
pure-ftpd
# vi /etc/pure-ftpd/pure-ftpd.conf
# Bind 127.0.0.1,21
Bind 0.0.0.0,***
將# Bind前的#去掉,並將127替換成0 將21改成你指定的埠
# vi /etc/services
將21和22埠都修改成指定的埠,22埠要改成與sshd_config里的埠一致.21埠要改成pure-ftpd.conf里一致的埠.以此類推…..
# iptables -I INPUT -p tcp --dport 22 -j DROP
# iptables -I INPUT -p tcp --dport 25 -j DROP
# iptables -I INPUT -p tcp --dport 21 -j DROP
# iptables -I INPUT -p tcp --dport 110 -j DROP
# iptables -I FORWARD -p tcp --dport 22 -j DROP
# iptables -I FORWARD ......>>

問題八:如何修改瀏覽器HTTP代理伺服器地址和埠? 打開瀏覽器,在IE瀏覽器的叮nternet屬性裡面,選擇那個連接,選擇那個「設置」,在裡面就能設置HTTP代理伺服器地址和埠了。

問題九:怎麼更改IP和埠? IP網路運營商提供給你的,只要你付費就會有個IP地址,不是你想改就能改的,
埠是電腦虛擬的類似地址的東西,很多,比如上網常用的80埠,也不用管,系統安排一切,主機的用戶名,密碼是自己設置的,在控制面板里,
寬頻客戶端用戶名,密碼是你開網設的,在哪開網在哪裡改了,
普通用戶沒必要關心這些的。

問題十:如何修改伺服器3389遠程登陸埠?求解答 眾所周知,入侵者一般先掃描主機開放埠,一旦發現其開放了3389埠,就會進行下一步的入侵,所以我們只需要修改該務默認埠就可以避開大多數入侵者的耳目。
]第一步:修改伺服器埠
打開「開始→運行」,輸入「regedit」,打開注冊表,進入以下路徑:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp],看見PortNamber值了嗎?其默認值是3389,點十進制修改成所希望的埠即可,例如3999。
再打開[HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro1Set\Control\Tenninal Server\WinStations\RDP\Tcp],將PortNumber的值(默認是3389)點十進制修改成埠3999。
修改完畢,重新啟動電腦
第二步:修改伺服器網卡設置
打開控制面板,雙擊「windows防火牆」點「高級」選擇你使用的網卡,點右邊的設置,在點擊底下的「添加」在詳細設置服務設置;(注意:此服務的外部的埠號一定要與第一步你所修改的埠一致)點擊確定。
第三步:在本地計算機設置遠程登陸軟體
打開「開始→運行」輸入「mstsc」打開軟體,點擊最後的「選項」,然後點底下的「另存為」隨便輸入一個名字;例:「遠程桌面.rdp」保存到桌面上;
在桌面上的:「遠程桌面.rdp」點擊右鍵,打開方式,選擇記事本打開,在文件的最底下添加「server port:i:3389」把3389更改為你「3999」現在你的設置全部完成
重新啟動電腦,以後遠程登錄的時候使用埠3999就可以了。

D. 如何用C#實現多線程TCP協議的伺服器端程序

用C#實現多線程TCP協議的伺服器端程序:
// <summary>
/// Tcp客戶線程類(服務端),ThreadServerProcessor 線程產生的客戶連接,用該線程讀寫
/// </summary>
public class ThreadClientProcessor
{
//Tcp連接實例
private TcpClient tcpClient;
//消息框,本來想寫日誌用
private System.Windows.Forms.ListBox MessageList;
private string Password; //該連接登陸密碼
private string Cmd1Echo;
private string Cmd2Echo;
private bool ClientLogOn;//客戶是否登陸
private bool TcpClose;
public ThreadClientProcessor(){}
//構造函數,參數解釋:Tcp客戶,消息框,該服務密碼(password命令後的參數) ,命令回應串 1,2 ******************
public ThreadClientProcessor(TcpClient client , ListBox listBox,string LogonText ,string cmd1echo,string cmd2echo)
{
ClientList.Add(this); //把當前實例加入一個列表中,方便以後控制
this.tcpClient=client;
this.MessageList=listBox;
this.Password=LogonText;
this.Cmd1Echo=cmd1echo;
this.Cmd2Echo=cmd2echo;
this.ClientLogOn=false;
this.TcpClose=false;
}
public static char[] CmdSplit={' '}; //讀來的串由' ' 進行分離,命名+' '+參數
//public const string[] Cmd=new string[] { "password","cmd1","cmd2","echo","bye"};
//該函數由你自己寫,這個只是給一個例子,
//功能:命令處理器,給個命令串,返回該命令處理結果,把命令和處理結果放在一個文本文件里,便於系統升級
public string TcpCmd(string s)
{
string result;
try
{
string cmdarg=s.Trim();
string[] args=cmdarg.Split(CmdSplit);
string cmd=args[0].ToLower();
switch (cmd )
{
case "password" :
if (args.Length>1)
{
ClientLogOn= Password.Equals(args[1].Trim());
result=ClientLogOn? "登陸成功":"密碼不正確,未登陸";
}
else result= "登陸時候,沒有輸入密碼";
break;
case "cmd1":
result=ClientLogOn?this.Cmd1Echo:"該命令無權執行,請先登陸";
break;
case "cmd2":
result=ClientLogOn?this.Cmd2Echo:"該命令無權執行,請先登陸";
break;
case "echo":
result=string.Format("伺服器回應:\n {0}",s);
break;
case "bye":
this.TcpClose=true;
result="DisConnected";
break;
default:
result="不可識別的命令";
break;
}
}
catch
{
result="解析命令發生錯誤,你輸入的是狗屁命令,TMD *^* ";
}
return result;
} //end cmd
//定義一個線程,該線程對應的函數是 void start()(不是Start())********************************
//一下程序主要是操作該線程
public System.Threading.Thread tcpClientThread;
//啟動客戶連接線程 *************************************************************
public void Start()
{
tcpClientThread=new Thread(new ThreadStart(start));
tcpClientThread.Priority=ThreadPriority.BelowNormal;
tcpClientThread.Start();
}
//斷開該當前實例連接,終止線程 **************************************************************
public void Abort()
{
if (this.tcpClientThread!=null)
{
//tcpClientThread.Interrupt();
tcpClientThread.Abort();
//一定要等一會兒,以為後邊tcpClient.Close()時候,會影響NetWorkStream的操作
Thread.Sleep(TimeSpan.FromMilliseconds(100));
tcpClient.Close();
}
}
//靜態列表,包含了每個連接實例(在構造實例時候使用了 ArrayList.Add( object))
private static System.Collections.ArrayList ClientList=new ArrayList();
//斷開所有的Tcp客戶連接,靜態方法*************************************************************
public static void AbortAllClient()
{
for(int j=0 ;j< ClientList.Count;j++)
{
//從實例列表中取一個對象,轉化為ThreadClientProcessor對象
ThreadClientProcessor o=(ThreadClientProcessor ) ClientList[j];
//調用ThreadClientProcessor 對象的停止方法
o.Abort();
}
//清除連接列表
ClientList.Clear();
}
//讀寫連接的函數,用於線程//*******************************************************************
private void start()
{
byte[] buf=new byte[1024*1024]; //預先定義1MB的緩沖
int Len=0; //流的實際長度
NetworkStream networkStream=tcpClient.GetStream(); //建立讀寫Tcp的流
try
{
byte[] p=Encoding.UTF8.GetBytes(" 歡迎光臨,請輸入密碼" );
//向Tcp連接寫 歡迎消息
if (!this.ClientLogOn )
networkStream.Write(p,0,p.Length);
//開始循環讀寫tcp流
while (!TcpClose)
{
//如果當前線程是在其它狀態,(等待掛起,等待終止.....)就結束該循環
if (Thread.CurrentThread.ThreadState!=ThreadState.Running)
break;
//判斷Tcp流是否有可讀的東西
if ( networkStream.DataAvailable)
{
//從流中讀取緩沖位元組數組
Len=networkStream.Read(buf,0,buf.Length);
//轉化緩沖數組為串
string cmd=Encoding.UTF8.GetString(buf,0,Len);
this.MessageList.Items.Add("客戶機:"+cmd);
//處理該緩沖的串(分析命令),分析結果為res串
string res=TcpCmd(cmd);
//把命令的返回結果res 轉化為位元組數組
byte[] result=Encoding.UTF8.GetBytes(res);
//發送結果緩沖數組給客戶端
networkStream.Write(result,0,result.Length);
this.MessageList.Items.Add("伺服器回應:"+res);
}
else
{
//Thread.Sleep(TimeSpan.FromMilliseconds(200d));
//this.MessageList.Items.Add("客戶機無命令");
//如果當前Tcp連接空閑,客戶端沒有寫入,則當前線程停止200毫秒
Thread.Sleep(TimeSpan.FromMilliseconds(200d));
}
}

E. 如何修改windows伺服器最大的tcp連接數

眾所周知,為了防範蠕蟲病毒的傳播和攻擊,Windows XP SP2將並發線程最多限制為10個。SP2利用Messages動態鏈接庫,來實時監控每個進程的並發線程數目,一旦它發現某進程的線程數超過10個,就會屏蔽掉部分線程。SP2這樣做,雖然可以防範震盪波類型的蠕蟲病毒,加強系統安全,但是也帶了一些負面影響,例如當你使用BT、P2P或FlashGet軟體下載時,部分線程將被屏蔽掉,因此下載速度會變得很慢。為此,你可以採取以下對策,來突破TCP並發連接數,從而提高SP2的多線程訪問速度。

一、注冊表修改法的誤區

為了突破SP2對TCP並發連接數的限制,網上曾經流傳過一種修改注冊表的方法,操作步驟如下:
單擊「開始」/運行,輸入Regedit打開注冊表,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下,修改的「TcpNumConnections」的鍵值,將之由10改為250,即設置TCP最大並發連接數為250。

經過實際測試,我們發現該方法看起來有效,但實質上並不能突破並發連接數限制,提高SP2的多線程訪問速度。因為SP2對線程數目的控制,是通過「Tcpip.sys」這個系統文件來實現的,並不是通過注冊表實現的,因此,該方法不能增加SP2的TCP並發連接數。

二、使用工具來替換Tcpip.sys

為了突破SP2的TCP並發連接數限制,正確地方法是修改Windows XP SP2的系統文件Tcpip.sys。Tcpip.sys是Windows XP SP2重要的系統文件,位於「C:\Windows\system32\drivers目錄下。該文件由於平時受到系統保護,所以正常情況下你是無法替換它的,必須在安全模式或純DOS模式下才能替換,建議你使用以下專門工具、來替換「Tcpip.sys」文件,操作步驟如下:

從網上下載替換工具(僅為30KB),用它來修改系統文件Tcpip.sys最大安全並發連接限制;然後備份一下C:\Windows\system32\drivers\Tcpip.sys文件。
接下來,雙擊打開下載文件ZIP壓縮包,運行其中的替換工具EvID4226Patch.exe,隨之將彈出一個命令行提示符窗口,首先顯示Windows當前的Tcpip.sys文件版本,以及並發連接的限制數值(默認為10);接著詢問你是否將連接數限制在50(如下圖1),你可以選擇「Yes/No/Change」,如果你輸入「Y」,則會將並發連接數改為「50」,如果想改為其他數(例如250),可以在提示符後輸入「c」,然後輸入最大的並發連接數(例如250)回車,最後在提示符下輸入「Y」並回車,這樣就替換了Tcpip.sys文件;Tcpip.sys文件被替換後,隨之會彈出系統文件保護對話框,你可以點擊「取消」按鈕,然後點擊「是」按鈕,重新啟動後,Tcpip.sys文件的替換就大功告成了!

現在你的最大並發連接數已超過10個,達到了250個,因此Windows XP SP2的多線程訪問速度得到了提升,當你用FlashGet、BT等多線程下載時,就不會感到網路帶寬的限制了。

三、DOS下修改Tcpip.sys文件

以上替換程序EvID4226Patch.exe也可以在DOS下使用,方法是:首先把EvID4226Patch.exe拷貝到C盤根目錄下;然後再進入DOS模式,進入C盤根目錄,輸入命令EvID4226Patch/L=$n$/w=C:\WINDOWS\system32\drivers/L=tcpip.sys即可修改Tcpip.sys文件。

注意:以上$n$為你要設置的最大安全連接數,假如要把最大並發連接數設置為250個線程,那麼輸入命令EvID4226Patch/L=150/w=C:\WINDOWS\system32\drivers/L=tcpip.sys即可。

四、使用比特精靈附帶的工具

比特精靈附帶的工具「TCP/IP連接數破解補丁」也可以替換Tcpip.sys,突破SP2的TCP並發連接數限制。

從網上下載比特精靈(BitSpirit)V2.7.2.225簡體中文正式版,然後雙擊下載文件進行安裝。你可以選擇安裝哪些組件(下圖2),應該安裝「用於Windows XP SP2的TCP/IP連接數破解補丁」,安裝結束後,XP開始菜單中就會有BitSpirit程序組,單擊其中的「XP SP2連接數破解補丁」,即可修改Tcpip.sys文件。

單擊「XP SP2連接數破解補丁」,彈出該軟體的界面,界面中列出了當前Tcpip.sys的版本、及最大並發連接數(右圖3),你可以在「TCP/IP Linitation」輸入一個數,來設置最大並發連接數,例如輸入250,然後按「Apply」按鈕,重啟系統後,你的SP2最大並發連接數就改為了250。

以上幾種方法雖然提高了Windows XP SP2的多線程訪問速度,但卻降低了SP2的安全性能,如果你的電腦感染了病毒和木馬,過多地啟用新線程,會加速病毒和木馬地蔓延,因此你在追求網路下載速度的同時,也要注意網路安全。建議你及時安裝升級殺毒軟體和防火牆,如果是普通用戶,可以利用上面的方法,將TCP最大並發連接數設置為5~8,BT用戶可以設置為160~400。

F. 求C語言高手,實現一個簡單的TCPIP程序以實現兩台計算機之間的聊天通信,

你上面給出的代碼其實就是MSDN裡面的演示代碼,不過不完整,只演示了兩個函數的使用,我給你看看我寫的TCP通訊程序,可以在同一個區域網內的兩台不同計算機之間聊天:

這其實就是某本將網路通訊的教程裡面的例子,不過是我自己重寫了一遍,下面給你代碼:

========================

下面是公共代碼:

========================

#ifndef__CINITSOCK__H__

#define__CINITSOCK__H__

#include<winsock2.h>

#include<iphlpapi.h>

#pragmacomment(lib,"ws2_32.lib")

#pragmacomment(lib,"iphlpapi.lib")

classCInitSock

{

public:

CInitSock(intnMinorVer=2,intnMajorVer=2)

{

WSADATAwsData;

WORDwVer=MAKEWORD(nMinorVer,nMajorVer);

if(0!=WSAStartup(wVer,&wsData))exit(0);

}

~CInitSock()

{

WSACleanup();

}

};

#endif

========================

下面是客戶端的代碼:

=======================

#include"CInitSock.h"

#include<iostream>

usingnamespacestd;

CInitSockg_Sock;

voidmain()

{

SOCKETsockClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(INVALID_SOCKET==sockClient)

return;

sockaddr_insockAddr;

sockAddr.sin_family=AF_INET;

sockAddr.sin_port=htons(4567);

sockAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

if(-1==connect(sockClient,(sockaddr*)&sockAddr,sizeof(sockAddr)))

{

cout<<"connectfailed"<<endl;

return;

}

while(true)

{

charszBuf[MAX_PATH];

ZeroMemory(szBuf,sizeof(szBuf));

cout<<"YouSay:";

cin>>szBuf;

if(SOCKET_ERROR ==send(sockClient,szBuf,MAX_PATH,0))

{

cout<<"sendfailed"<<endl;

return;

}

intnRecvLen=recv(sockClient,szBuf,MAX_PATH,0);

if(nRecvLen>0)

{

//szBuf[nRecvLen]='';

cout<<"ServiceSay:"<<szBuf<<endl<<endl;

}

else

{

cout<<"recvfailed"<<endl;

return;

}

}

closesocket(sockClient);

}

======================

下面是服務端的代碼:

======================

#include"CInitSock.h"

#include<iostream>

usingnamespacestd;

CInitSockg_Sock;

voidmain()

{

SOCKETsockClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(INVALID_SOCKET==sockClient)

return;

sockaddr_insockAddr;

sockAddr.sin_family=AF_INET;

sockAddr.sin_port=htons(4567);

sockAddr.sin_addr.S_un.S_addr=INADDR_ANY;

bind(sockClient,(sockaddr*)&sockAddr,sizeof(sockAddr));

listen(sockClient,SOMAXCONN);

charszBuf[MAX_PATH];

sockaddr_inremoteAddr;

intnLen=sizeof(sockaddr_in);

SOCKETsock=accept(sockClient,(sockaddr*)&remoteAddr,&nLen);

while(true)

{

intnRecvLen=recv(sock,szBuf,MAX_PATH,0);

if(nRecvLen>0)

{

cout<<"ClientSay:"<<szBuf<<endl<<endl;

}

ZeroMemory(szBuf,sizeof(szBuf));

cout<<"YouSay:";

cin>>szBuf;

if(SOCKET_ERROR==send(sock,szBuf,MAX_PATH,0))

{

cout<<"sendfailed"<<endl;

}

}

closesocket(sock);

closesocket(sockClient);

}

希望能夠幫到樓主。

閱讀全文

與windowstcp服務端程序相關的資料

熱點內容
在qq群里怎麼寫文件 瀏覽:404
linux中日誌xml配置文件 瀏覽:800
伺服器共享文件許可權 瀏覽:80
哪個網站能貨到付款 瀏覽:876
字元串加1java 瀏覽:344
word文件加密然後密碼忘了怎麼辦 瀏覽:235
大數據的戰略意義 瀏覽:679
初中英語單詞闖關游戲app有哪些 瀏覽:195
2017最新流行的app 瀏覽:240
整合建立大數據平台 瀏覽:306
js判斷參數是否為空 瀏覽:556
港版iphone6聯保嗎 瀏覽:198
lm310保護代碼設定 瀏覽:74
加工中心自動編程哪個好 瀏覽:599
c語言和vb編程哪個好學 瀏覽:949
北斗神拳漫畫哪個版本好 瀏覽:366
微信加好友自動屏蔽 瀏覽:833
ai文件預設在哪裡 瀏覽:690
搞的地圖代碼 瀏覽:798
桌面上文件管理器在哪裡 瀏覽:161

友情鏈接