草庐IT

Flask-Sockets

全部标签

sockets - 如何使用 C 中的套接字读取流的 TCP 数据包?

让我先说说我想做什么。我正在尝试编写一个非常简单的代理服务器。我使用套接字API来创建套接字。socket=socket(AF_INET,SOCK_STREAM,0));我的代理服务器工作正常,直到我尝试使用它来获取流数据。所以我所做的是我的服务器套接字监听请求并解析它们,然后将它们转发到实际的服务器,然后我使用read()调用来读取数据包,然后我盲目地将它转发回客户端。对于所有html页面和图像,它工作正常。但是当我尝试转发流媒体视频时,我做不到。我的套接字总是返回应用层数据(HTTP数据包),但在流式视频中只有第一个数据包是http,其余的都只是TCP数据包。所以我只能转发第一个H

sockets - 如何通过 RAW 套接字使用 TCP 校验和卸载

(使用Linux)使用原始套接字创建TCP数据包-事实证明,计算校验和是我在高性能网络中的瓶颈。由于NIC将支持校验和卸载,并且ethtool也说它已启用,我希望我可以使用校验和卸载。但是当我使用原始套接字时,似乎没有计算校验和。有没有办法使用原始套接字启用tcp校验和卸载?编辑:实际上我的机器/NIC(Thinkpadx201)的行为似乎不太符合逻辑:当使用普通的tcp套接字发送数据包时,所有校验和都是错误的,在环回接口(interface)上以及机器之间。有趣的是,另一台机器默默地传送数据包?Edit2:好的,现在我只是查看了错误机器上的数据包,卸载工作正常。但是当我将tcp_ch

sockets - TCP套接字数据消耗

我每5秒从我的TCP套接字向我的服务器发送数据。以这种发送消息的速度,一小时内将消耗多少数据。每次,都会打开一个套接字,并将数据从客户端泵出到服务器。我在客户端使用3GGSM调制解调器。我的消息是,ID1$Socket$Open$timestamp。都是字符串 最佳答案 ID1$Socket$Open$timestamp是25个字节,假设是一个8位字符串,并且假设您没有在消息之间发送任何其他数据(header/定界符等)。因此,每5秒发送1条消息是每分钟60/5=12条消息,即每小时12*60=720条条消息。每条消息25字节,即7

sockets - 需要帮助澄清 TCP 端口

在网上研究端口,我发现它有很多不同的描述方式。主要方式是端口就像计算机上的一扇门,由特定进程使用。第二种通常解释的方式是,它只是一个标记,是特定进程在IP地址之上的额外标识符。我难以理解的是,如果端口在某种程度上像门一样实际上是“物理的”。数据是否真的通过端口?如果是这样,那么是否可以通过同一个端口同时发送和接收数据?如果端口更像是一个标签,那么通过防火墙“打开”端口是什么意思?最后一个问题,发送进程发送数据需要端口吗?我知道它必须将数据发送到接收端的特定端口,并且必须指定其用于接收回数据的本地端口,但是当它进行实际发送时,是否需要使用端口(并且是它与它已经用于接收的端口相同)?非常感

sockets - 32 位 linux 上的同时 tcp/ip 连接数

我有一个关于实现负载平衡器或执行TCP/IP的TCP/IP服务器程序的具体问题。由于端口号是16位,因此在任何给定时间,单个Linux机器上最多只能有65536个端口。而TCP/IP需要一个端口号才能与外界对话。1)当客户端建立连接时,选择一个临时端口号。2)当监听套接字的服务器接受连接时,分配一个端口号。因此,据我所知,在任何给定时间,一台给定机器上最多只能存在65536个TCP/IP连接。那么为什么一些或大多数负载均衡器声称有200,000个或更多并发连接?有人可以解释一下吗?关于负载均衡器,一旦负载均衡器将请求转发到它后面的其中一台服务器,负载均衡器是否可以以某种方式向它传递一些

sockets - fluentd aws kinesis插件没有将记录放入kinesis

我一直在尝试查看FluentD是否是我公司向Kinesis发送数据的可行方法。我在AmazonEC2实例上使用td-agentrpm包安装了FLuentD。没有太多关于如何发送数据的参数,只是TCP或in_forward插件可能是最合适的。我从TCP开始,但我之前从未真正用TCP做过任何事情,如果我犯了一些新的错误,我深表歉意。我一直在用头撞墙,试图发送TCP请求并将它们放入Kinesis。Kinesis显示没有写入。起初我以为我没有发送足够的数据来触发写入,所以我尝试向它发送大量数据但没有这样的运气。谷歌搜索这个问题没有给我带来任何答案,因为只有一个结果似乎是可行的,这是某个网站上的

sockets - 针对 TCP 零窗口的 Wireshark RST

在与MicrosoftLync客户端(MacOSX)共享应用程序期间,带有RST标志的TCPACK针对TCP零窗口数据包从我的应用程序端发送到Lync端,并且调用中断。仅供引用:MyApplicationEnd:172.16.6.106:55848LyncEnd(Remote):172.16.14.58:18627Environment:MyApplicationEnd:Centos/LinuxLyncEnd:MacOSXSharedOverWifi.编辑WiresharkTCPDumpLyncBYE消息到我的应用程序:BYEsip:172.16.6.106:48038;transpo

sockets - 如何配置 EC2 安全组以允许通过公共(public) IP 地址进行环回?

我必须在EC2上运行一个程序,该程序从配置中读取主机的公共(public)IP地址(我似乎无法轻易更改),然后连接到它,即它通过循环回到实例公共(public)IP地址。我找不到如何创建可以环回EC2实例的安全组。我的规则是:出站:0.0.0.0/0所有tcpinbound:[privateIP/32,127.0.0.1/32,publicIP/32]alltcp4440(我需要的端口)入站IP均无效。我通过在主机上远程登录到公共(public)IP来对此进行测试:telnetx.x.x.x4440,但我永远无法做到(其中x.x.x.x是我的公共(public)IP)。不过,我可以通过

sockets - 在多个IP地址中使用wireshark监控tcp数据包分段和数据包重传

我很难使用wireshark监控tcp数据包分段和数据包重传。我们想监控在我们的应用程序中服务器和客户端之间的通信过程中是否发生任何数据包丢失或重传。我们确实尝试监控单个IP地址1天,但文件非常大,打开文件检查每个数据包需要很长时间。这是非常耗时且难以追踪的。有什么方法可以只在发生tcp包分段/重传时保存和监控吗? 最佳答案 您应该将捕获文件限制在不超过~100MB,您可以在捕获设置期间使用停止条件来做到这一点。检查此链接以获取更多详细信息:"The“CaptureOptions”dialogbox"您还可以使用捕获过滤器来仅保存所

sockets - Labview - 检查 TCP 读取缓冲区是否包含更多数据

我有一个TCP服务器可以处理以下结构的消息:[消息。大小(2字节)|留言。有效负载(N字节)]过程如下:从TCP连接中读取2个字节以确定负载大小N。读取N有效负载字节并对其进行处理。关闭TCP连接。为了减少网络开销,我想搭载多条消息。[消息。尺码#1|留言。有效负载#1][消息。尺码#2|留言。负载#2]...显然,如果TCP读取缓冲区包含更多数据(不为空),则处理循环不得关闭TCP连接。有什么方法可以可靠地检查Labview2013中的TCP读取缓冲区中是否有更多数据可用?我可以再次调用read()并检查它是否超时。但我想避免使用这种解决方案,因为它会引入不必要的延迟。在上述处理循环