问题标签 [tcp-ip]
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.
java - 服务器消失时强制断开 TCP 连接
我的应用程序使用 Jersey 在循环中对另一台服务器执行 HTTP 长轮询。它依赖于服务器在 30 秒内返回。问题在于,有时服务器会死机,并被具有不同 IP 地址的另一台服务器替换。这会导致最后一个 HTTP 调用永远不会返回并且永远不会超时,因此我的应用程序中的轮询循环会一直卡住,直到我重新启动我的应用程序。
如何强制我的应用程序中断 HTTP 调用或检测服务器已消失?它是一个使用 Jersey 客户端的 Java 应用程序。
c - 在c中使用套接字重新连接
我在 c 中使用套接字并在发送/接收上取得了成功。但是,问题是当我的服务器崩溃时,客户端必须重新连接服务器(服务器在一段时间后运行)。所以在这里我做了什么:
- 创建一个套接字
- 连接
- 接收/发送
- 如果 recv size == 0 转到第 2 步。
这个算法对我不起作用。有什么想法吗?
代码:
c - 带有 OpenSSL 的 Web 服务器
我试图编译我的网络服务器,但发生了如下这些事情:
有人知道这里有什么问题吗?
sockets - 如何通过以太网在两个嵌入式设备之间进行通信?
我不是这方面的专家,需要你的建议。我在以太网/局域网上有一些设备。我想让这些设备通过 LAN 进行通信,而无需进入它们的网络配置。以下是我的计划,请告诉我是否可以实现:
1) 我在这些设备上安装 TCP/IP 堆栈
2)我给他们他们的主机名,如设备1,设备2等......
3)我将这些设备配置为本地链接网络,以便他们可以配置自己并获取他们的 IP。
4)我使用套接字编程并使用主机名访问每个设备。
请让我知道这是否可以轻松完成,如果我错过了上述几点,请告诉我。提前致谢。
c# - C# 中的文件传输程序在图像和无法打开的二进制文件上留下伪影
文本文件似乎没问题。这是用于发送文件的代码:
接收文件的代码非常相似:
我看过很多关于图像伪影的帖子,但所有问题都涉及到将字节编码为文本的问题。我相信我已经避免了这个问题。我在整个过程中使用字节数组,并跟踪正在读取的字节数,但图像最终仍然损坏。我检查了文件,它们在客户端和服务器上包含相同数量的字节,所以服务器上发生了一些事情,但它只是不正确。代码有什么问题,或者可能是服务器问题?
android - Android TCP/IP Socket通信返回数据失败
我目前正在开发一个 Android 应用程序,以便为我的雇主链接到现有产品。该系统是运行固件的设备,可使用 .NET Windows 程序、直接串行通信或控制网页通过串行、以太网或 wi-fi 进行控制。Android 应用程序旨在自动连接控制网页,以便可以通过手机控制设备,而无需任何人手动查找 IP 地址。为此,我需要能够找到 IP 地址并确定该地址是否对应于这些固件设备之一。
本质上,我想要做的是遍历 Android 看到的所有 IP 地址,并将每个 IP 地址发送到上述方法。这个东西应该用固件命令ping地址,看看发回了什么来确定地址是否对应于固件设备。目前,我一直在通过发送诸如“HOME”或“GETINFO”之类的命令(当然,为固件正确格式化)并比较发送回的内容与预期的响应。像 home 这样的命令还具有引起物理响应的好处,因此我们无需微芯片调试器就知道是否至少收到了命令。
就目前而言,我将正确的地址硬编码并发送到此方法。我知道该应用程序可以使用与 URL 相同的地址成功加载网页控件,因此它必须正确且连接必须良好,但无法直接与设备通信。没有观察到物理响应,也没有发回任何信息——输入流只是超时并返回 -1。让我非常难过的是,据我所知,我发送信息的方式与 .NET Windows 控件完全相同,但它不起作用。
进一步说明:我知道将 IP 地址字符串作为主机名发送到套接字构造函数可能不起作用,但由于没有抛出 UnknownHostException,我知道套接字可以将其解析为 IP 地址。正确的?
我的代码如下:
感谢您提供的任何帮助,我真的很感激!
java - 监控机器上的 tcp 缓冲区大小
我必须分析基于 TCP 的客户端服务器 Java 应用程序,其中一部分是监视 TCP 发送和接收缓冲区大小(实时,当消息流过时,例如使用 VisualVM 监视正在运行的应用程序的内存和线程) . 什么是最好的方法/工具?
c# - 来自 TCP/IP 的读取循环
我需要连接一个服务器(使用 ip 和端口)并创建一个读取循环,该循环将从服务器获取消息作为 XML。有时没有来自服务器的消息。
我试图创建一个连接(工作正常)并阅读消息,我从服务器收到第一条消息,当我试图阅读另一条消息时 - 它卡住了。我认为现在可能没有消息,但我需要循环继续直到有消息......它甚至不会去“catch”或“finally”,什么都不做......
windows - Windows 应用程序上的不规则套接字错误 (10054)
我正在开发一个 Windows (Microsoft Visual C++ 2005) 应用程序,该应用程序使用在 Intranet 的不同主机上运行的多个进程。
进程使用 TCP/IP 相互通信。不同的进程可以在同一台主机上,也可以在不同的主机上(即通信既可以在同一台主机内,也可以在不同主机之间)。
我们目前有一个不规则出现的错误。通信似乎工作了一段时间,然后停止工作。然后它再次工作一段时间。
当通信不起作用时,我们会收到一个错误(显然是在一个进程试图发送数据时)。调用如下所示:
通过检查我们得到的错误代码
我们看到这是一个错误 10054。这是我在 Microsoft 文档中找到的内容(请参阅此处):
因此,据我了解,连接被接收过程中断。在某些情况下,此错误(AFAIK)是正确的:一个进程已终止,因此无法访问。在其他情况下,发送方和接收方都在运行并记录活动,但由于上述错误(错误在日志中报告),它们无法通信。
我的问题。
- SO_LINGER 选项是什么意思?
- 什么是保持活动,它如何断开连接?
- 如何避免这个问题或从中恢复?
关于最后一个问题。我们尝试的第一个解决方案(实际上,这是一种解决方法)是在发生错误时重新发送消息。不幸的是,同样的错误在一段时间(几分钟)内一遍又一遍地发生。所以这不是一个解决方案。
目前我们不明白是软件问题还是配置问题:也许我们应该在 Windows 注册表中检查一些东西?
一个假设是操作系统耗尽了临时端口(如果连接关闭但端口由于 TcpTimedWaitDelay 而未释放),但通过分析这个问题,我们认为应该有很多:即使没有消息也会出现问题进程之间发送过于频繁。但是,我们仍然不能 100% 确定我们可以排除这种情况:临时端口会以某种方式丢失(???)
另一个可能有帮助的细节是,发送和接收在每个进程中同时发生在不同的线程中:TCP/IP 库中是否存在可能损坏的共享数据结构?
同样很奇怪的是,问题出现的不规律:通讯正常几分钟,然后几分钟不通,然后又通了。
感谢您的任何想法和建议。
编辑
感谢您确认唯一可能的解释是连接关闭错误的提示。通过对问题的进一步分析,我们发现连接的服务器端进程已崩溃/已终止并已重新启动。所以有一个新的服务器进程正在运行并在正确的端口上侦听,但客户端没有检测到这一点,并且仍在尝试使用旧连接。我们现在有一种机制来检测这种情况并在客户端重置连接。
java - 在本地测试 TCP/IP 连接
目前,我有一个应用程序使用 IP 地址和端口通过 TCP/IP 连接到终端服务器。我是否可以在我的笔记本电脑上本地创建一个模拟 TCP/IP 连接,以便我可以使应用程序连接到我的笔记本电脑上的特定 IP 和端口?
我是网络新手,所以如果问题不清楚,请执行。
我尝试这样做的原因是,应用程序正在侦听终端服务器上 TCP/IP 连接上的特定端口,并且我使用 VB 宏将一些数据远程发送到同一端口。我想在没有终端服务器的情况下(仅使用我的笔记本电脑)在本地测试相同的内容,但是当我运行应用程序时,它只能使用 TCP/IP 连接进行连接。
该应用程序是用 Java 编写的,可以通过提供要连接的 IP 地址和端口在本地运行,所以我想看看是否可以让应用程序作为 TCP/IP 连接连接到我的笔记本电脑。
任何输入表示赞赏。