tcp相关内容
我有一个服务,它将在 TcpListener 实例上调用 Start() 方法.此侦听器正在使用一个不常见的端口,并且不知道任何其他服务都在使用该端口.很少会在一分钟左右的时间内遇到奇怪的错误.一分钟后,服务(在失败时立即重新启动)因以下异常而背靠背崩溃: SocketException在 System.Net.Sockets.Socket.DoBind(System.Net.EndPoint
..
在带有 URG 标志的 TCP 段中也可能有正常数据.接收主机如何处理紧急数据包?如果它不是数据流的一部分,它如何确认紧急数据?它承认其余部分吗? 我知道它通常不使用,但是如果两个主机都支持相同的关于 URG 标志的 RFC,它们如何处理带外数据? 如果紧急数据是中止消息,接收方将丢弃所有其他数据,但发送方仍需要确认消息已收到. 解决方案 一点背景: TCP 紧急机制允许
..
我阅读了 std::net 和 mio 的文档,发现了一些方法,例如 set_nodelay 和 set_keepalive,但我还没有找到在给定套接字上设置其他套接字选项的方法,例如 SO_REUSEPORT 和 SO_REUSEADDR .我该怎么做? 解决方案 因为 SO_REUSEPORT 没有交叉-platform,您将需要深入了解特定于平台的代码.在这种情况下,您可以从套接字获
..
当一个 tcp 客户端与我的 TCP 服务器建立一个 tcp 连接时,它发送了几个数据包后,我想在这个 TCP 连接上进行硬/中止关闭,如何在 linux C 中做到这一点? 这里的硬/中止关闭意味着 tcp 服务器将立即向客户端发送 RST.根本没有 FIN/ACK. 谢谢! 解决方案 来自 Socket 手册页 SO_LINGER设置或获取 SO_LINGER 选项.
..
这行得通 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
..
我用 c# 编写了一个套接字服务器,它将用作我参与的一个小型游戏项目的基本设计.套接字服务器在局域网上工作正常.我能够在服务器和客户端之间完全正常通信.但是在 WAN 上,服务器从客户端接收到所有正确的消息,但客户端没有从服务器接收到消息.客户端和服务器都在路由器后面,但只有服务器的路由器才能转发端口.当客户端连接到服务器时,我得到连接的 IP 地址.由于客户端位于 NAT 后面,我是否需要收集来
..
我知道将端口号绑定到 TCP 套接字 来发送数据并不容易(因为系统通常将随机端口绑定到套接字). 但我在一篇文章中读到,通过使用一些低级网络方法,您可以将端口号绑定到 TCP 套接字,然后使用它来发送数据? 有没有人知道如何做到这一点? 我正在使用c编程语言 解决方案 连接前绑定. s = socket(AF_INET, SOCK_STREAM, 0);/* ... *
..
为什么我们不能使用进程 ID 来获取我们在套接字编程中绑定的端口.在套接字编程中,我们创建套接字并获取套接字描述符,然后绑定到特定端口.对于多个连接,为什么我们不使用进程 ID,因为所有连接也是返回进程 ID 的进程? 解决方案 这是一个有趣的想法,但我认为它会引发一些问题: 您如何知道要连接到哪个进程 ID? 如果您想在同一个进程中监听多个“端口"怎么办?您只有一个进程 ID.
..
我有一个关于绑定和连接到 localhost 的一般性问题.我正在使用 TCP 客户端/服务器,在服务器端我执行以下形式: 绑定(本地主机,9999);听(); 这是在一个名称为 e.g. 的 unix 主机上完成的.host1 现在,客户端在同一网络上的单独 Windows 机器上运行.为了连接,我尝试通过 hostname:port、hostIp:port 进行连接,但都没有成功.
..
在服务器死机后,TCP keepalive(带有小超时)是否会阻止客户端挂在 recv 上? 场景: 服务器和客户端运行在不同的机器上: 客户端通过带有 KEEPALIVE 选项的 TCP 连接到服务器 客户端发送“Hello server"并等待响应 服务器收到“Hello server"并响应“Hello client" 客户端收到响应,休眠 10 秒并重复第 2-4
..
在浏览开源代码库时,我想到了一个有趣的场景.假设在成功建立 TCP 连接后,TCP 客户端必须发送一个序列号 = 101 的数据包.相反,它发送一个序列号为 201 的 FIN.现在 TCP 服务器认为 FIN 无序并将其排队等待一个要到达的数据包.我的问题是根据 RFC,如果服务器接收到序列号 = 101 且长度 = 150 的数据包,TCP 端点的行为应该是什么.它会覆盖之前发送的 FIN 吗
..
我有以下代码默认连接到接口“eth0",它是一个 1G 网卡,但我想使用“eth5"连接,它是一个 10G 网卡. 类 TCPClientSocket {受保护:int socket_file_descriptor_;上市:TCPClientSocket ( ):socket_file_descriptor_(-1){/* 套接字创建 */socket_file_descriptor_ = 套
..
在服务器端,我试图优雅地关闭连接的套接字.我知道 Socket 上的正确事件顺序应该是: 使用 SocketShutdown.Send 选项关闭套接字 循环/等待,直到套接字接收返回 0 字节 套接字关闭 我有几个问题: 如果 Socket.Receive 永远不会返回(0 字节)怎么办?我们会一直试图永远关闭套接字吗? 每当我在服务器上调用 Close 时,客
..
在 Linux(内核 3.0.0.12;带有 GCC 4.6.1 的 C++)上,我想通过 (POSIX) 发送调用彼此发送几个 TCP 数据包. 使用 Wireshark,我可以看到数据包不是在单独的 TCP 帧中发送的,而是两个或更多在一个数据包中一起发送. 有没有办法告诉系统从自己的 TCP 数据包中的一个 send() 缓冲区发送数据?程序流不应在发送调用时阻塞. 解决方
..
我正在尝试了解我获得的性能数据以及如何确定最佳线程数. 查看这篇文章的底部了解我的结果 我在 perl 中编写了一个实验性的多线程 Web 客户端,它下载一个页面,获取每个图像标签的源并下载图像 - 丢弃数据. 它使用非阻塞连接,每个文件的初始超时时间为 10 秒,每次超时后加倍并重试.它还缓存 IP 地址,因此每个线程只需进行一次 DNS 查找. 从 1 线程耗时 2:
..
我正试图围绕网络套接字.到目前为止,我的理解是服务器创建了一个绑定到特定端口的新套接字.然后它监听这个套接字来处理客户端请求. 我已阅读本教程 http://docs.oracle.com/javase/tutorial/networking/sockets/definition.html 它说 如果一切顺利,服务器接受连接.接受后,服务器获得一个绑定到同一个本地端口的新套接字,并且还
..
我创建了几个实验: 设置 1:我创建了一个 TCP Sender 应用和一个 TCP Receiver 应用. 对于这个实验,我在一个 iOS 设备上启动了 TCP Sender,在另一个 iOS 设备上启动了 TCP Receiver.然后验证两者都已建立连接并发送和接收数据.然后我将 TCP Receiver 应用程序置于后台.TCP Sender 应用程序指示失去连接并崩溃(是的
..
服务器创建了一个套接字并绑定到一个端口,并启动了一个正在循环中的线程来接受连接.稍后由于异常导致线程退出而退出循环,但套接字仍绑定到端口.现在,如果客户端“连接"到该服务器,它就成功了.这怎么可能?如果我理解正确,则仅在服务器在侦听套接字上“接受"后才返回“连接".我在这里遗漏了什么吗? 解决方案 如果我理解正确,“连接"仅在服务器在侦听套接字上“接受"后才会返回.我在这里遗漏了什么吗
..
我的应用程序创建了一个 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 的可能原因是
..
我有一个 C++ 网络应用程序,它接受来自客户端的 TCP 连接,然后在套接字上等待,直到客户端决定发送数据(有时他们很长时间都不会发送任何东西,这没关系). 它主要在客户端崩溃或机器关闭时检测错误情况,但是当连接到客户端的网络电缆被拔下时,它需要很长时间才能注意到,我希望它尽快注意到这种情况. 我无法控制客户端,也无法让他们发送类似“ping"的信息.我的服务器确实向客户端发送了一个
..