tcp相关内容

C# -- TcpListener.Start() 导致 SocketException 并带有消息“每个套接字地址仅使用一次";

我有一个服务,它将在 TcpListener 实例上调用 Start() 方法.此侦听器正在使用一个不常见的端口,并且不知道任何其他服务都在使用该端口.很少会在一分钟左右的时间内遇到奇怪的错误.一分钟后,服务(在失败时立即重新启动)因以下异常而背靠背崩溃: SocketException在 System.Net.Sockets.Socket.DoBind(System.Net.EndPoint ..
发布时间:2022-01-19 16:30:43 C#/.NET

TCP URG(紧急数据)是否得到确认?

在带有 URG 标志的 TCP 段中也可能有正常数据.接收主机如何处理紧急数据包?如果它不是数据流的一部分,它如何确认紧急数据?它承认其余部分吗? 我知道它通常不使用,但是如果两个主机都支持相同的关于 URG 标志的 RFC,它们如何处理带外数据? 如果紧急数据是中止消息,接收方将丢弃所有其他数据,但发送方仍需要确认消息已收到. 解决方案 一点背景: TCP 紧急机制允许 ..
发布时间:2022-01-19 16:29:45 其他开发

如何在 Rust 中设置套接字选项 SO_REUSEPORT?

我阅读了 std::net 和 mio 的文档,发现了一些方法,例如 set_nodelay 和 set_keepalive,但我还没有找到在给定套接字上设置其他套接字选项的方法,例如 SO_REUSEPORT 和 SO_REUSEADDR .我该怎么做? 解决方案 因为 SO_REUSEPORT 没有交叉-platform,您将需要深入了解特定于平台的代码.在这种情况下,您可以从套接字获 ..
发布时间:2022-01-19 16:29:16 服务器开发

如何在 TCP 连接上进行硬/中止关闭?

当一个 tcp 客户端与我的 TCP 服务器建立一个 tcp 连接时,它发送了几个数据包后,我想在这个 TCP 连接上进行硬/中止关闭,如何在 linux C 中做到这一点? 这里的硬/中止关闭意味着 tcp 服务器将立即向客户端发送 RST.根本没有 FIN/ACK. 谢谢! 解决方案 来自 Socket 手册页 SO_LINGER设置或获取 SO_LINGER 选项. ..
发布时间:2022-01-19 16:29:00 其他开发

通过 URL 获取 IP 地址

这行得通 target.sin_addr.s_addr = inet_addr("127.0.0.1"); 但我想从网站 URL 中输入 IP 我试过了 const char host[] = "http://www.google.com/";结构主机 *host_ip;host_ip = gethostbyaddr(host, strlen(host), 0); 我在使用 geth ..
发布时间:2022-01-19 16:27:23 其他开发

WAN 上的 TCP/UDP 套接字服务器

我用 c# 编写了一个套接字服务器,它将用作我参与的一个小型游戏项目的基本设计.套接字服务器在局域网上工作正常.我能够在服务器和客户端之间完全正常通信.但是在 WAN 上,服务器从客户端接收到所有正确的消息,但客户端没有从服务器接收到消息.客户端和服务器都在路由器后面,但只有服务器的路由器才能转发端口.当客户端连接到服务器时,我得到连接的 IP 地址.由于客户端位于 NAT 后面,我是否需要收集来 ..
发布时间:2022-01-19 16:26:32 C#/.NET

将端口号绑定到 TCP 套接字(outgoin)以发送数据包

我知道将端口号绑定到 TCP 套接字 来发送数据并不容易(因为系统通常将随机端口绑定到套接字). 但我在一篇文章中读到,通过使用一些低级网络方法,您可以将端口号绑定到 TCP 套接字,然后使用它来发送数据? 有没有人知道如何做到这一点? 我正在使用c编程语言 解决方案 连接前绑定. s = socket(AF_INET, SOCK_STREAM, 0);/* ... * ..
发布时间:2022-01-19 16:25:46 C/C++开发

为什么我们不能使用进程 ID 来获取我们绑定的端口

为什么我们不能使用进程 ID 来获取我们在套接字编程中绑定的端口.在套接字编程中,我们创建套接字并获取套接字描述符,然后绑定到特定端口.对于多个连接,为什么我们不使用进程 ID,因为所有连接也是返回进程 ID 的进程? 解决方案 这是一个有趣的想法,但我认为它会引发一些问题: 您如何知道要连接到哪个进程 ID? 如果您想在同一个进程中监听多个“端口"怎么办?您只有一个进程 ID. ..
发布时间:2022-01-19 16:24:54 其他开发

网络 - 绑定到本地主机

我有一个关于绑定和连接到 localhost 的一般性问题.我正在使用 TCP 客户端/服务器,在服务器端我执行以下形式: 绑定(本地主机,9999);听(); 这是在一个名称为 e.g. 的 unix 主机上完成的.host1 现在,客户端在同一网络上的单独 Windows 机器上运行.为了连接,我尝试通过 hostname:port、hostIp:port 进行连接,但都没有成功. ..
发布时间:2022-01-19 16:24:41 其他开发

尽管 KEEPALIVE,TCP,recv 功能仍挂起

在服务器死机后,TCP keepalive(带有小超时)是否会阻止客户端挂在 recv 上? 场景: 服务器和客户端运行在不同的机器上: 客户端通过带有 KEEPALIVE 选项的 TCP 连接到服务器 客户端发送“Hello server"并等待响应 服务器收到“Hello server"并响应“Hello client" 客户端收到响应,休眠 10 秒并重复第 2-4 ..
发布时间:2022-01-19 16:24:11 服务器开发

乱序 FIN 数据包并覆盖?

在浏览开源代码库时,我想到了一个有趣的场景.假设在成功建立 TCP 连接后,TCP 客户端必须发送一个序列号 = 101 的数据包.相反,它发送一个序列号为 201 的 FIN.现在 TCP 服务器认为 FIN 无序并将其排队等待一个要到达的数据包.我的问题是根据 RFC,如果服务器接收到序列号 = 101 且长度 = 150 的数据包,TCP 端点的行为应该是什么.它会覆盖之前发送的 FIN 吗 ..
发布时间:2022-01-19 16:24:02 其他开发

如何从服务器优雅地关闭套接字

在服务器端,我试图优雅地关闭连接的套接字.我知道 Socket 上的正确事件顺序应该是: 使用 SocketShutdown.Send 选项关闭套接字 循环/等待,直到套接字接收返回 0 字节 套接字关闭 我有几个问题: 如果 Socket.Receive 永远不会返回(0 字节)怎么办?我们会一直试图永远关闭套接字吗? 每当我在服务器上调用 Close 时,客 ..
发布时间:2022-01-19 16:20:03 C#/.NET

在单独的 TCP 段中发送数据而不被 TCP 堆栈合并

在 Linux(内核 3.0.0.12;带有 GCC 4.6.1 的 C++)上,我想通过 (POSIX) 发送调用彼此发送几个 TCP 数据包. 使用 Wireshark,我可以看到数据包不是在单独的 TCP 帧中发送的,而是两个或更多在一个数据包中一起发送. 有没有办法告诉系统从自己的 TCP 数据包中的一个 send() 缓冲区发送数据?程序流不应在发送调用时阻塞. 解决方 ..
发布时间:2022-01-19 16:16:22 服务器开发

TCP、HTTP 和多线程甜蜜点

我正在尝试了解我获得的性能数据以及如何确定最佳线程数. 查看这篇文章的底部了解我的结果 我在 perl 中编写了一个实验性的多线程 Web 客户端,它下载一个页面,获取每个图像标签的源并下载图像 - 丢弃数据. 它使用非阻塞连接,每个文件的初始超时时间为 10 秒,每次超时后加倍并重试.它还缓存 IP 地址,因此每个线程只需进行一次 DNS 查找. 从 1 线程耗时 2: ..
发布时间:2022-01-19 16:15:52 其他开发

是否为每个请求创建了新的套接字?

我正试图围绕网络套接字.到目前为止,我的理解是服务器创建了一个绑定到特定端口的新套接字.然后它监听这个套接字来处理客户端请求. 我已阅读本教程 http://docs.oracle.com/javase/tutorial/networking/sockets/definition.html 它说 如果一切顺利,服务器接受连接.接受后,服务器获得一个绑定到同一个本地端口的新套接字,并且还 ..
发布时间:2022-01-19 16:15:26 其他开发

当 iOS 应用程序确实进入后台时,TCP 和 UDP(使用多播)连接会发生什么情况

我创建了几个实验: 设置 1:我创建了一个 TCP Sender 应用和一个 TCP Receiver 应用. 对于这个实验,我在一个 iOS 设备上启动了 TCP Sender,在另一个 iOS 设备上启动了 TCP Receiver.然后验证两者都已建立连接并发送和接收数据.然后我将 TCP Receiver 应用程序置于后台.TCP Sender 应用程序指示失去连接并崩溃(是的 ..
发布时间:2022-01-19 16:08:59 移动开发

可以在没有服务器调用“接受"的情况下成功返回套接字上的“连接"调用吗?

服务器创建了一个套接字并绑定到一个端口,并启动了一个正在循环中的线程来接受连接.稍后由于异常导致线程退出而退出循环,但套接字仍绑定到端口.现在,如果客户端“连接"到该服务器,它就成功了.这怎么可能?如果我理解正确,则仅在服务器在侦听套接字上“接受"后才返回“连接".我在这里遗漏了什么吗? 解决方案 如果我理解正确,“连接"仅在服务器在侦听套接字上“接受"后才会返回.我在这里遗漏了什么吗 ..
发布时间:2022-01-19 15:59:22 服务器开发

TCP 连接错误 115 Operation in Progress 原因是什么?

我的应用程序创建了一个 TCP 连接,这工作正常.但是在一个网络服务器有很多IP说 174.X.X.X 54.x.x.x像这样 调用 TCP 连接时(非阻塞,超时 60 秒)到 IP 174.X.X.X 总是成功的.但是使用 ip 54.x.x.x 连接到同一台服务器的 TCP 失败(大多数情况下),错误号为 115正在测量操作. 你能解释一下 errno 115 的可能原因是 ..
发布时间:2022-01-19 15:58:41 其他开发

如何检测 TCP 连接中的网线是否已拔出?

我有一个 C++ 网络应用程序,它接受来自客户端的 TCP 连接,然后在套接字上等待,直到客户端决定发送数据(有时他们很长时间都不会发送任何东西,这没关系). 它主要在客户端崩溃或机器关闭时检测错误情况,但是当连接到客户端的网络电缆被拔下时,它需要很长时间才能注意到,我希望它尽快注意到这种情况. 我无法控制客户端,也无法让他们发送类似“ping"的信息.我的服务器确实向客户端发送了一个 ..
发布时间:2022-01-19 15:55:34 C/C++开发