问题标签 [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.

0 投票
3 回答
2921 浏览

javascript - 如何检测给定 IP 是否在 Javascript 中的给定子网中?

我想用 Javascript 编写一个函数,如下所示:

我应该从头开始编写它,还是有一些我可以使用的好库?或者整个功能是否已经编写并在公共领域?

0 投票
1 回答
2350 浏览

delphi - Delphi:限制 TCP 连接

我在我的 Delphi 应用程序中使用 TServerSocket 组件。我想限制客户端连接,比如说一千。不幸的是,我不知道该怎么做。该组件不提供任何属性,如“MaxConnections”或任何其他类似的属性。

我使用 OnGetThread 事件创建新的服务器线程 (TServerClientThread)。为了获得活动连接的数量,我使用了“Socket.ActiveConnections”属性。

不幸的是,我不知道该怎么办。当连接数超过限制时,我尝试不在 OnGetThread 过程中创建任何线程,但它没有改变任何东西 - 客户端,即使它无法发送或接收任何信息,它也可以连接到服务器并保持连接。怎么做才能不允许新客户端连接或只允许他们连接但立即断开连接?

0 投票
3 回答
41696 浏览

windows - Windows 并发 tcp/ip 连接的最大数量是多少?

在 .NET 中,我已经成功尝试了以下配置:

使用 100 个并发 HttpWebRequest 他们几乎同时回答(不到一秒)。

我想知道为什么有些人在一些论坛上写道,Windows XP 和 Windows Server 2008 将这个数字限制为 15 或 20。他们是对的吗?

0 投票
2 回答
1332 浏览

network-programming - 在通过 localhost 传输期间,OSI 模型中使用了哪些层?

通过 localhost 地址或 127.0.0.1 传输数据时,OSI 模型中使用了哪些层?

我相信通信从应用层开始,一直到某个层,但没有数据通过物理层,还是有?

0 投票
6 回答
22534 浏览

profiling - 您最喜欢的适用于 Windows 的免费 Netstat GUI / Connection Monitor 应用程序是什么?

我需要比 Sysinternals TCPView(我经常使用)功能更丰富的东西……但它也必须是免费软件。:)

0 投票
6 回答
22776 浏览

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。

0 投票
8 回答
122849 浏览

c# - 如何正确和完全关闭/重置 TcpClient 连接?

关闭或重置 TcpClient 连接的正确方法是什么?我们有与硬件通信的软件,但有时会出现问题,我们不再与它通信,直到我们重新启动软件。

我曾尝试强制 TcpClient.Close() 甚至将其设置为 null 但这不起作用。只有完全重新启动软件才能工作。

建议?


我不能使用 using 关键字,因为 TpcClient 仅在一个位置定义,但在整个库中都使用。(并且在任何给定时间只有一个连接)

这是一个处理通信的库。软件本身可以调用Controller类(代表硬件)的ResetConnection()方法。

目前看起来像

现在从我在这里读到的内容,我应该使用 tcpClient.Dispose() 而不是“= null”

我会尝试一下,看看它是否有所作为。

0 投票
1 回答
1520 浏览

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时这是不明确的。

那么如何获取最后的数据呢?

0 投票
3 回答
2874 浏览

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是在运行时选择的。

控制流程如下:

  1. Panasonic 调用 Asterisk:它打开Session 1(TCP/1720) 到 Asterisk 并发送一个 SETUP 消息Session 1,其中包含port 2Panasonic 将要收听的消息。
  2. Asterisk 向 Panasonic 发送 CALL PROCEEDING 消息Session 1
  3. 松下开始收听port 2
  4. Panasonic 通过 发送 TCP ACK Session 1
  5. AsteriskSession 2port 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?

0 投票
3 回答
8509 浏览

eclipse - tcp/ip 监视器

在 Eclipse 中,我运行了一个 weblogic 服务器,并在其中部署了一个 j2ee 应用程序。该应用程序在端口 7001 上提供服务。我想将监视器连接到应用程序,我不知道要使用哪些端口。我想我知道要为主机名(localhost:7001)输入什么,但不确定要为类型和本地端口使用什么。在proeferences中,本地端口是什么意思。在应用程序运行之前或之后启动监视器是否重要?我的目标是在我登录时观察流量,通过浏览器从我的本地机器浏览到应用程序的其他部分。谢谢你的帮助