tcp相关内容

使用 boost 通过 TCP 序列化和发送对象

我正在尝试通过 tcp 连接发送 C++ ojbect: 我的对象都是可序列化的,使用 boost 序列化. TCP 服务器/客户端是用 boost asio 制作的. 基本上我想发送这样的消息将包含消息类型(被发送对象的类型)和数据本身(序列化对象)和数据的大小,以便我可以处理缓冲区(大小相同类型的对象可能会有所不同,因为它不是 POD). 我有点卡住了,因为我不知道如何发送 ..
发布时间:2021-12-28 13:07:51 C/C++开发

非阻塞 tcp 与 epoll 连接

我的 linux 应用程序正在执行非阻塞 TCP 连接系统调用,然后使用 epoll_wait 检测三向握手完成.有时 epoll_wait 会同时返回 POLLOUT &POLLERR 为同一个套接字描述符设置的事件. 我想了解 TCP 级别发生了什么.我无法按需重现它.我的猜测是,在我的事件循环中对 epoll_wait 的两次调用之间,我们有一个 SYN+ACK/ACK/FIN 序列, ..
发布时间:2021-12-28 13:07:43 服务器开发

TCP、HTTP 和多线程的甜蜜点

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

我应该在每次交易后关闭套接字 (TCPIP) 吗?

我编写了一个 TCPIP 服务器,它实现了 FileSystemWatcher 并用从 FSW 获取的新文件中解析的数据填充队列. 单个客户端将连接到此服务器并从队列中请求数据(任何时候都不需要其他客户端连接).如果没有数据存在,客户端将等待(1 秒)并重试. 客户端和服务器都是异步编写的——我的问题是:客户端应该为每个事务创建一个新的套接字(在 while 循环内),还是只是让套接字 ..
发布时间:2021-12-28 13:07:29 C#/.NET

Delphi 如何检查 TCP 端口是否可用?

除了捕获 netstat 调用之外,是否有更优雅的方法来检查 Delphi 是否可以使用 TCP 端口? 解决方案 我想你可以使用 Indy 的组件来做到这一点.例如,TIdHTTPServer 会在端口被打开时引发异常. 所以基本上你可以创建这样的组件,将其绑定到 localhost: 并且如果引发异常(捕获并检查它)那么端口可能正在使用中,否则它是免费的. ..
发布时间:2021-12-28 13:07:22 其他开发

Stream.Copy 是管道传输吗?

假设我正在编写一个 tcp 代理代码.我正在从传入流中读取并写入输出流.我知道 Stream.Copy 使用缓冲区,但我的问题是:Stream.Copy 方法是在从输入流中获取下一个块时写入输出流,还是像“从输入读取块、将块写入到输出、从输入读取块等"这样的循环? 解决方案 以下是 .NET 4.5 中 CopyTo 的实现: private void InternalCopyTo(St ..
发布时间:2021-12-28 13:07:03 C#/.NET

套接字心跳与保活

实现自己的心跳和为套接字设置`keepalive 的优缺点是什么? 我在某处读到过,keepalive 有时会失败,并且无论如何都会关闭连接(取决于网络结构).另一件事是,自己的心跳可以检测应用程序是否响应(不仅是套接字). 我的主要目标是确保所有这些:保持连接活跃,即使没有发送数据(除了可能的心跳),双方的快速连接丢失检测,应用程序响应检测. 我已经在两端实现了一个简单的心跳, ..
发布时间:2021-12-28 13:06:54 C/C++开发

在java TCP连接中绑定一个接口

我在solaris 主机中有两个接口.我想通过两个接口向单个 TCP 服务器发起两个 TCP 连接,如图所示.Java中是否有任何选项可以将接口绑定到TCP套接字以覆盖本地路由表? 我附上网络图, 我想同时使用串行链路带宽来从服务器获取数据.因此,我想在两个接口上启动连接. 谢谢, 解决方案 可以使用 Socket s = new Socket(hostname, po ..
发布时间:2021-12-28 13:06:47 Java开发

是否可以在客户端和服务器端关闭 Java 套接字?

我在两个 java 应用程序之间有一个 socket tcp 连接.当一侧关闭插座时,另一侧保持打开状态.但我希望它被关闭.而且我迫不及待地想看看它是否可用,然后关闭它.我想要某种方式从一侧完全关闭它.我能做什么? 解决方案 TCP 不是这样工作的.操作系统不会释放资源,即文件描述符和端口,直到应用程序明确关闭套接字或死亡,即使 TCP 堆栈知道另一端关闭了它.收到来自对等方的 FIN 后 ..
发布时间:2021-12-28 13:06:38 Java开发

你如何在 C# 中获取原始 TCP 数据包?

我想接收原始 TCP 数据包,然后以相同的工作量将其发回. 它应该看起来像这样: void OnPacketReceived(TcpPacket p){byte [] body = p.GetBody();} 注意:我需要 TCP 数据包而不是以太网帧. 解决方案 如果将套接字实现为原始套接字,则可以访问整个数据包(实际上必须自己处理有关数据包的所有内容). 在创建套接字时 ..
发布时间:2021-12-28 13:06:23 C#/.NET

C++ 如何通过套接字发送对象?

我有个问题想问你. 我有这门课: ` #define DIMBLOCK 128#ifndef _BLOCCO_#define _BLOCCO_班级集团{上市:整数标识;字符*数据;块(int id);};#万一blocco::blocco(int id){身份证=身份证;数据 = 新字符 [DIMBLOCK];} ` 并且该应用程序有一个客户端和一个服务器.在我的服务器的主体 ..
发布时间:2021-12-28 13:06:14 C/C++开发

为什么服务器不能像客户端IP一样获取客户端MAC地址?

据我所知,数据包经过的所有 MAC 地址都在数据包中.这是因为进入某个路径的每个数据包也应该在相似的路径中返回.那么,如果服务器的路由器知道客户端的mac地址(所有),为什么服务器页面(如aspx)不能有这个信息? 请给个解释.(不要只是告诉我我错了). 如果我理解正确,客户端会发送一个包含其 MAC 地址的数据包.当数据包通过代理(如客户端路由器)时,代理的地址也会添加到数据包中.等 ..
发布时间:2021-12-28 13:05:59 其他开发

使用 boost::asio 配置 TCP keep_alive

Linux 和 Windows 都支持 TCP keep-alive 数据包.它们可以通过(依赖于系统的)setsockopt 调用来激活和配置,参见例如这篇文章 适用于 Linux 案例.使用 boost::asio 时,似乎支持保持活动消息,请参阅 当前文档.但是,该页面仅涵盖激活它.在对旧帖子 有人指出 Boost 最近增加了在操作上配置超时的方法(这避免了对不同系统的 setsockopt ..
发布时间:2021-12-28 13:05:26 C/C++开发

没有服务器的 TCP P2P

是否可以在没有服务器的情况下编写 TCP P2P 程序?当我在谷歌上搜索这个问题时,我发现了一些关于 NAT 遍历,UPnP,我可以以某种方式使用它们吗? 解决方案 是的,你可以(正如 GrandmasterB 指出的那样,每个对等方都有服务器和客户端套接字).但是,您可能已经知道,NAT 会给您带来痛苦. 如果您不能使用中间件(客户端连接到的公共 IP 地址上的服务器 (*)) - ..
发布时间:2021-12-28 13:05:16 其他开发

Objective-C:评估由我们自己的 PKI(根 CA)在 TLS TCP 连接上签署的服务器证书

*已解决* 我的问题是参考以下问题: Objective-C:如何使用签名者的公钥验证 SecCertificateRef? 我们有自己的 PKI 和我们信任的自己的 rootCA.我们使用这个 rootCA 签署交付给个人服务器的证书.现在我想连接 iOS 应用程序并检查从服务器传递的证书是否使用我们的 CA 签名. 我的应用程序应该能够使用此证书连接到 n 个服务器(可能通 ..
发布时间:2021-12-28 13:05:09 移动开发

C# Socket.Receive 消息长度

我目前正在开发可以接受来自多台客户端计算机的多个连接的 C# Socket 服务器.服务器的目标是允许客户端“订阅"和“取消订阅"服务器事件. 到目前为止,我已经愉快地浏览了此处:http://msdn.microsoft.com/en-us/library/5w7b7x5f(v=VS.100).aspx 和 http://msdn.microsoft.com/en-us/library/f ..
发布时间:2021-12-28 13:04:52 C#/.NET