导航:首页 > 编程语言 > 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服务端程序相关的资料

热点内容
mindmaplinux 浏览:733
oppo手机怎么连接电脑传输数据 浏览:624
word删除尾注分隔符 浏览:773
公告质疑需要哪些文件 浏览:608
数据库模型是干什么的 浏览:404
win10的驱动怎么安装驱动 浏览:320
word文件水印怎么取消 浏览:443
rhel6的镜像文件在哪里下载 浏览:571
成功正能量微信头像 浏览:848
wps表格如何恢复数据 浏览:264
linuxc静态库创建 浏览:838
u盘有微信文件但微信恢复不了 浏览:585
苹果的网站数据是什么 浏览:22
ps滚字教程 浏览:237
win7网络邻居如何保存ftp 浏览:186
安卓客户端代理服务器 浏览:572
编程用苹果 浏览:659
51虚拟机的文件管理在哪里 浏览:13
win10系统有没有便签 浏览:722
java引用传递和值传递 浏览:109

友情链接