问题标签 [tcp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何检测给定 IP 是否在 Javascript 中的给定子网中?
我想用 Javascript 编写一个函数,如下所示:
我应该从头开始编写它,还是有一些我可以使用的好库?或者整个功能是否已经编写并在公共领域?
delphi - Delphi:限制 TCP 连接
我在我的 Delphi 应用程序中使用 TServerSocket 组件。我想限制客户端连接,比如说一千。不幸的是,我不知道该怎么做。该组件不提供任何属性,如“MaxConnections”或任何其他类似的属性。
我使用 OnGetThread 事件创建新的服务器线程 (TServerClientThread)。为了获得活动连接的数量,我使用了“Socket.ActiveConnections”属性。
不幸的是,我不知道该怎么办。当连接数超过限制时,我尝试不在 OnGetThread 过程中创建任何线程,但它没有改变任何东西 - 客户端,即使它无法发送或接收任何信息,它也可以连接到服务器并保持连接。怎么做才能不允许新客户端连接或只允许他们连接但立即断开连接?
windows - Windows 并发 tcp/ip 连接的最大数量是多少?
在 .NET 中,我已经成功尝试了以下配置:
使用 100 个并发 HttpWebRequest 他们几乎同时回答(不到一秒)。
我想知道为什么有些人在一些论坛上写道,Windows XP 和 Windows Server 2008 将这个数字限制为 15 或 20。他们是对的吗?
network-programming - 在通过 localhost 传输期间,OSI 模型中使用了哪些层?
通过 localhost 地址或 127.0.0.1 传输数据时,OSI 模型中使用了哪些层?
我相信通信从应用层开始,一直到某个层,但没有数据通过物理层,还是有?
profiling - 您最喜欢的适用于 Windows 的免费 Netstat GUI / Connection Monitor 应用程序是什么?
我需要比 Sysinternals TCPView(我经常使用)功能更丰富的东西……但它也必须是免费软件。:)
c++ - 如何阻止选定的应用程序访问互联网(C++、Win32)
我希望有一个正在运行的应用程序或服务,它可以按某个时间表禁用除特定应用程序之外的所有应用程序对 Internet 的访问。
我正在尝试创建一个可以在程序控制下打开或关闭的过滤器。不仅仅是 IP 地址和端口,我还希望能够阻止特定的应用程序,就像 Zone Alarm 和其他软件防火墙让您阻止一样。
例如,iexplore.exe、skype.exe、firefox.exe、aim.exe。但仍需要允许其他应用程序根据需要进行连接。
它必须在 Vista 和 XP 上工作,但我有点希望该方法在每个平台上都会有所不同。
基本上,过滤器必须将网络通信绑定回发出请求的可执行文件,然后允许或拒绝它。
更新:
至少在Vista上,看起来我想在 WFP 的 ALE 层中使用过滤器。
在XP上,我仍在寻找最好的方法。我真的需要编写设备驱动程序并处理内核内容吗?我只是一个低级的应用程序开发人员。现在杀了我。
更新 2:
目前正在研究 Pre-Vista 系统的 PfCreateInterface 和相关的 Pf* API。
c# - 如何正确和完全关闭/重置 TcpClient 连接?
关闭或重置 TcpClient 连接的正确方法是什么?我们有与硬件通信的软件,但有时会出现问题,我们不再与它通信,直到我们重新启动软件。
我曾尝试强制 TcpClient.Close() 甚至将其设置为 null 但这不起作用。只有完全重新启动软件才能工作。
建议?
我不能使用 using 关键字,因为 TpcClient 仅在一个位置定义,但在整个库中都使用。(并且在任何给定时间只有一个连接)
这是一个处理通信的库。软件本身可以调用Controller类(代表硬件)的ResetConnection()方法。
目前看起来像
现在从我在这里读到的内容,我应该使用 tcpClient.Dispose() 而不是“= null”
我会尝试一下,看看它是否有所作为。
windows - 当请求的缓冲区大小大于可用数据量时,为什么 recv 会失败?
TCP 传输堆栈的基础是他们的作者有时记录的许多缓冲区限制。在 WinXP SP3 上,我认为我遇到过其中之一,但不知道为什么。
我已经实现了一个简单的客户端来从服务器获取数据(由一位同事用 Java 编写)。该协议是将数据的长度(按网络顺序)写入四个字节,然后写入数据。服务器将数据以 1024 字节块的形式写入 TCP 流。客户端正确接收到数据缓冲区的长度,分配内存并循环重复调用recv获取所有数据:
如果我将 TCP_BlockSize 设置为 4095 或更低,一切都很好,我可以接收数兆字节的传输。当我尝试 4096 大小的接收块时,对剩余数据的最后一个请求,即 len - currentLen < TCP_BlockSize,总是失败,返回值为 -1,errno = 0。我尝试了一些实验,比如修剪传输的数据在 815054 和 834246 字节之间,对于 4096 字节的接收块,一切都变得繁荣起来。
另一个细节:服务器在发送最后一个字节后关闭套接字。这就引出了一个问题,为什么不返回剩余的数据?在流为空并关闭之前不从recv返回-1感觉像是一种缺陷,因为当流不为空并且关闭以从recv接收-1时这是不明确的。
那么如何获取最后的数据呢?
linux - 在 Linux 中,我如何知道某个 TCP 数据包是否收到了 ACK?
长话短说:在 Linux 中,如何确保收到某个 TCP 数据包的 ACK 消息?
全文:
我正在调试 Asterisk/OpenH323 <-> Panasonic IP-GW16 问题。
H323 连接涉及两个会话:H225.0 和 H245。这些只是两个 TCP 会话,通过它们传输一些数据。
我们称它们Session 1
为(对于 H225.0)和Session 2
(对于 H245)。
Session 1
具有众所周知的 TCP 端口号 1720,而端口号Session 2
是在运行时选择的。
控制流程如下:
- Panasonic 调用 Asterisk:它打开
Session 1
(TCP/1720) 到 Asterisk 并发送一个 SETUP 消息Session 1
,其中包含port 2
Panasonic 将要收听的消息。 - Asterisk 向 Panasonic 发送 CALL PROCEEDING 消息
Session 1
- 松下开始收听
port 2
- Panasonic 通过 发送 TCP ACK
Session 1
。 - Asterisk
Session 2
在port 2
.
第 2 步和第 3 步的顺序很重要:Panasonic 不会收听,port 2
除非它在 上收到 CALL PROCEEDING 消息step 2
。
但是在 OpenH323 代码中,step 2
只有step 5
几行。
这就是连接sometimes
在调试模式下quite never
工作并在发布时工作的原因。
在数据包转储中可以清楚地看到。我做了一系列的实验,在52个案例中,有52个,如果step 5
在前面step 4
,连接失败;如果没有,则连接成功。
除了 ACK 中的 ACK 之外,没有从 Panasonic 发送的其他消息step 4
,而且似乎 Asterisk 知道port 2
被监听的唯一方法是接收该 ACK。
当然我可以实现定时等待,但我想要一个更清洁的解决方案。
所以问题又来了:在通过 TCP 连接发送消息后step 2
,我如何知道是否收到了包含该消息的数据包的 ACK?
eclipse - tcp/ip 监视器
在 Eclipse 中,我运行了一个 weblogic 服务器,并在其中部署了一个 j2ee 应用程序。该应用程序在端口 7001 上提供服务。我想将监视器连接到应用程序,我不知道要使用哪些端口。我想我知道要为主机名(localhost:7001)输入什么,但不确定要为类型和本地端口使用什么。在proeferences中,本地端口是什么意思。在应用程序运行之前或之后启动监视器是否重要?我的目标是在我登录时观察流量,通过浏览器从我的本地机器浏览到应用程序的其他部分。谢谢你的帮助