C#,使用IE代理建立TCP连接

C#,使用IE代理建立TCP连接,第1张

>

需要你的客户端服务器都使用>

首先获取IE代理服务器地址和端口,这些IE都是在保存在注册表中的。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
ProxyEnable  代理是否启用
ProxyServer  代理服务器

然后连接代理服务器,把你要发送的数据利用>

>GET / 

我们要做的就是把数据塞到URL或者Form Data中。然后服务器方再把数据取出来处理。

服务器再将要返回的数据夹在>

这样就能使用IE代理通讯了。

客户端的IP自动获取,关键要看客户端的IP是由谁来分配的,如果都是有ISP提供的那么服务器利用IP去连接客户端就不太可能。可以尝试用下面两种思路解决:
1、能否让客户机主动连接服务器。
2、使用动态DNS。让每个客户机都申请一个动态域名,无论它的IP怎样变,当改变以后都会到DNS服务器进行注册,然后服务器使用主机的名字访问客户端。

A电脑做服务器。要设立端口映射。可以WEB登陆路由器进行设置。将A电脑的外网IP(WAN的IP地址或者在网上查询的本机IP)映射到你的电脑的LAN的IP地址(我的是19216819)。
B电脑做客户端,直接连接外网的IP及映射的端口,会直接用你映射到IP的电脑来进行TCP通讯。

1可能是在获取客户端的ip和端口时,处理出现问题,导致无法正确发送到客户端。
2客户端是否使用固定的端口来接收服务器信息,或服务器是否正确发送到客户端的相应的端口。
3通过上面分析,最大可能是在处理端口出现问题,请重新检查。
4实在不行,最好使用抛出异常方法来捕获错误消息,或是通过一步一步调试分析数据发送过程。

1,TCP使用三次握手

three-way
handshake

协议来建立连接,这三次握手为:
请求端(通常称为客户)发送一个
SYN
报文段(
SYN

1
)指明客户打算连接的服务器的端口,以及初始顺序号(
ISN
)。
服务器发回包含服务器的初始顺序号的
SYN
报文段(
SYN

1
)作为应答。同时,将确认号设置为客户的
ISN

1
以对客户的
SYN
报文段进行确认(
ACK
也为
1
)。
客户必须将确认号设置为服务器的
ISN

1
以对服务器的
SYN
报文段进行确认(
ACK

1
),该报文通知目的主机双方已完成连接建立。
发送第一个
SYN
的一端将执行主动打开(
active
open
),接收这个
SYN
并发回下一个
SYN
的另一端执行被动打开(
passive
open
)。另外,
TCP
的握手协议被精心设计为可以处理同时打开(
simultaneous
open
),对于同时打开它仅建立一条连接而不是两条连接。因此,连接可以由任一方或双方发起,一旦连接建立,数据就可以双向对等地流动,而没有所谓的主从关系。
 
2,应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);
如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

首先要明白TCP四元组的样子,四元组分别是<源IP,目的IP,源端口,目的端口>。

(前面2个元素在IP头部,后面2个元素在TCP头部)
IPv4的地址是4个字节,所以是32位。

端口是2个字节,所以是16位。

因此当服务器的IP地址和监听端口都确定的时候,并发连接数的天花板是2^(32 + 16)。

TCP协议想要实现百万级别的高并发,必须使用基于事件驱动的全异步开发模式。
单机如何实现管理百万主机的心跳服务?

>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10697291.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存