草庐IT

raw-sockets

全部标签

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

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

sockets - 为什么非阻塞 TCP 套接字会在::write() 调用中花费大量时间?

对于非阻塞TCP套接字,我希望write()或read()在任何情况下都会立即返回(无论是read()是否可以填充缓冲区,write()是否可以发送整个缓冲区)。在非阻塞模式下,是否存在导致write()工作时间(毫秒)的一些现实情况? 最佳答案 原因很简单:线程饥饿。虚拟机从我的代码中窃取时间:例如,usleep(30000)可能会在800毫秒后返回。 关于sockets-为什么非阻塞TCP套接字会在::write()调用中花费大量时间?,我们在StackOverflow上找到一个类似

sockets - 可以可靠地将 TCP 套接字连接到自身吗?

我想知道是否有可能将一个TCP套接字可靠地连接到它自己——也就是说,只获得一个套接字,无论您发送()什么,您都会通过recv()接收回来。我看到这可能会发生(例如here、here和here),但这些帖子都没有解释如何以编程方式可靠地执行此操作(即,这通常被吹捧为好奇心,而不是一个人会故意使用的功能)。我对适用于Windows、Mac和Linux的解决方案很感兴趣。为了完整起见,请让我解释一下我为什么对此感兴趣。我正在编写一个基于云的应用程序,服务器可以在其中向其他服务器(包括它们自己)发送消息。每个服务器都使用一个套接字与其他服务器通信,因此,为了统一代码并使某些线程问题更简单,如果

sockets - 如何通过端口 80 发送 HTTP 命令

我要完成的事情的简要说明。所以我正在使用CrestronsSimpl+软件。我的工作是为名为QTPro的声音掩蔽系统创建一个模块。现在,QTPro有一个API,您可以在其中通过HTTP控制它。我需要一种通过HTTP与QTPro建立连接的方法(我有我需要的一切,IP、用户名、密码)。有什么问题吗?我刚刚开始使用这种语言。不幸的是,没有我想要的那么多文档,否则我不会在这里。我知道我需要在端口80上通过TCP创建一个套接字连接。我只是不知道我应该通过它发送什么。举个例子:http://username:password@address/cmd.htm?cmd=setOneZoneData&Z

python - 如何在套接字中使用 raw_input

在我说什么之前,如果您对标题感到困惑,那就是说我使用了这段代码:cmd,addr=sock.accept()我怎么能将这段代码用于客户看到raw_input,这是我的代码:fromsocketimport*sock=socket(AF_INET,SOCK_STREAM)HOST="0.0.0.0"PORT=8080sock.bind((HOST,PORT))sock.listen(5)whileTrue:cmd,addr=sock.accept()cmd.send('Welcometoserver.py\r\n')main=raw_input(">")这是我的输出:-bash-4.1#

python-2.7 - scapy 中的 <Raw> 标签,如何解码内容?

我使用Scapy嗅探TCP数据包,试图从响应中获取HTML代码。>>>A=sniff(filter='tcp')(然后我刷新了一个网页)>>>A>>>A.show()0000Ether/IP/TCP192.168.0.2:60210>74.125.28.95:wwwS(显然不止这些,这只是一个例子)>>>A[28]>\xe7\x07\x8f];\xdf\x13\x0eT\xd7\xcc\xbe\xf2\xf57\x80\x02\x00\x03\xac\xcc}\xcd\x02\xb4\x9e\x05h\x9d\xdb\x07\x18\xa0\x00\x9c\xfd\xd0\xc7\x8

networking - TCP、UDP、SCTP、RUDP 还是 RAW?

我目前正在开发一个网络库,但我不知道应该用哪种方式创建它。该库应设计为与游戏一起使用。需要可靠和不可靠的数据包。我应该使用“TCP和UDP”、“UDP和SCTP”、“UDP并创建RUDP协议(protocol)”还是“RAW并从头开始构建所有内容”?这是一个很长的问题,让我苦苦挣扎!我认为创建一个“健壮的”RUDP协议(protocol)是最好的解决方案,但我可以做一个健壮的吗?(额外的工作不是问题)感谢您的宝贵时间。 最佳答案 每一个都是有原因的。TCP用于有点慢的可靠连接,UDP用于快速不可靠的连接,STCP不常用,因此它肯定不

node.js - 将 Socket.io 浏览器客户端连接到本地 Node.js 网络服务器

我在HTTPS网站上启用了个人用户脚本。用户脚本使用Socket.io客户端API连接到我PC中的Node.jsTCP服务器服务器注意到客户端正在连接到服务器,但客户端没有注意到连接,而是从浏览器控制台收到此错误Failedtoloadresource:net::ERR_TIMED_OUT我不知道如何解决此错误,但我假设它与Socket.io和Net彼此不兼容或网站不允许发生连接有关这是我的客户端代码socket.on('connect',function(){console.log('CONNECTEDTOSERVER');socket.on('message',function(m

python - 简单socket服务器的基本理解

我是套接字编程的新手,正在尝试了解套接字的工作原理。目前我正在尝试使用python套接字库来查看它是如何工作的。现在有几件事我无法全神贯注。让我们举个例子,如图here使用Python套接字库用Python编写的简单回显客户端和服务器的示例。echo服务器如下所示#echo_server.py导入套接字host=''#Symbolicnamemeaningallavailableinterfacesport=12345#Arbitrarynon-privilegedports=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind(

sockets - TCP - 不同应用程序可以同时将同一客户端端口用于不同连接吗?

在TCP中,不共享相同可执行镜像的不同进程(例如,没有fork())是否有可能在Windows、Linux或OSX上使用相同的客户端端口?我相信这与使用setsockopt()设置的套接字选项SO_REUSEADDR和SO_REUSEPORT特别相关。据我所知,我相信同一个进程/图像可以做到这一点,但我还没有找到关于多个进程/图像的信息。我想这在理论上是可能的,因为每个套接字都是由5值元组[IP_PROTO,src_ip:src_port,dst_ip:dst_port]定义的。所以我假设,只要共享一个客户端端口的多个TCP连接没有建立到同一个dst_ip:dst_port,这在理论上