草庐IT

Flask-Sockets

全部标签

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

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,这在理论上

sockets - RST 在通过 TCP 套接字的视频流中?

我有一个通过UDP传输视频流的应用程序,它完全成功。我将套接字更改为TCP。当它在几个数据包传输后运行时,接收方发送RST并且它停止工作。(大长度的数据包也很奇怪,在MTU为1400时从发送方传输到接收方-这是什么数据包?)我检查了接收者和发送者的日志。接收方收到的最后一个数据包有一个大而奇怪的序列号(转储数据包)。它出错,然后应用程序停止。发件人没有发送这样的数据包。这个数据包是从哪里来的?是传输层实现的吗?当我在每次发送数据包后向发送方添加一个sleep时间(0.1秒)时。该程序在Wireshark中没有任何奇怪的大长度数据包或奇怪的序列号的情况下工作但这不是视频的合理解决方案。你

sockets - 错误的文件描述符 Boost asio

我尝试用boostasio和boostbeast做一个简单的tcp/http服务器。但是,当我尝试读取套接字消息时,我得到了错误的文件描述符。我真的不明白哪里出了问题。我使用std::move将套接字从服务器类传输到detect_session类以获得相同的“套接字”服务器tcp_server::tcp_server(boost::asio::io_context&ioc,tcp::endpointendpoint,std::shared_ptrconst&doc_root):acceptor(ioc,endpoint),doc_root(doc_root){wait_for_conn

sockets - 如何自动测试网络 (TCP/IP) 应用程序?

我教学生开发网络应用程序,包括客户端和服务器。目前,我们还没有接触到现有的协议(protocol),如HTTP、SMTP等。学生们在普通套接字API之上编写非常简单的程序。目前我手动检查学生的作业,但我想自动执行此任务并为网络应用程序创建一个自动测试台。最有趣的测试主题是:将TCP段分成小部分并以明显的延迟传送它们。我需要这样的测试的一个原因是,学生通常只是发出一个read/recv调用并处理接收到的数据,而不检查是否收到了所有必要的数据。TCP不保证消息边界,因此在某些情况下有必要进行多次read/recv调用。问题是在大多数简单的网络应用程序中(例如,在聊天应用程序中)消息很小并且

sockets - 触发按需 TCP 消息到可重新连接、不可共享的 Netty 管道的正确方法是什么?

我有一个带有重新连接监听器的Netty4.xTCP客户端应用程序,但我想不出一种方法来实现将写入套接字channel的触发器(HTTP、MQ等)。到目前为止,我已经尝试通过遵循anotherexample向我的ChannelInboundHandler添加一个write(ByteBufmsg),但是对于我的重新连接监听器,重新连接时出现以下异常:...isnota@Sharablehandler,socan'tbeaddedorremovedmultipletimes.我是Netty的新手,所以我不确定用户事件触发器是否可以解决这个问题。重连代码:if(!future.isSucces

java/android TCP sockets - 检测服务器是否离线

我正在开发一个连接到TCP服务器以上传一些数据的Android应用程序。我需要检测服务器是否离线才能知道我上传是否成功。经过一番考察后,我决定使用OutputStream的write()中的NullPointerException作为指示器。虽然这适用于我的情况(由我实现的服务器,必须只从客户端写入()),但我想知道一种更好/标准的方法来检测TCP连接的另一个端点是否已关闭或消失下。(我已经在stackoverflow上查看了一些相关问题。)有任何意见/意见吗?谢谢, 最佳答案 表明远程主机没有响应的SocketIOExceptio

sockets - 在服务器窗口结束之前客户端发送确认消息的原因是什么?

情况是这样的:客户端开始建立连接并请求一个文件。服务器开始发送文件但是在服务器发送窗口的中间,客户端发送了一条确认消息。是因为服务器发送速率更高吗?还有更多的理由或条件吗? 最佳答案 没有要求等待窗口结束;引用RFC2018ThereceiverSHOULDsendanACKforeveryvalidsegmentthatarrivescontainingnewdata 关于sockets-在服务器窗口结束之前客户端发送确认消息的原因是什么?,我们在StackOverflow上找到一个类