草庐IT

Socket_recv

全部标签

python - Python TCP 套接字 recv(1) 与 recv(n) 的效率

我正在构建一个TCP应用程序,它使用换行符\n来分隔未知长度(但通常​​小于64字节)的消息。我正在寻找thisarticle非常有用。是一次recv一个字符并检查它是否为换行符或recv更大缓冲区并存储“剩余字符”的最佳(即最有效/最快)方法"在类里面?一次一个def__recv_until_newline(self):message=""whileTrue:chunk=self.socket.recv(1)ifchunk==""orchunk=="\n":breakmessage+=chunkreturnmessage保持缓冲区def__recv_until_newline(sel

c++ - 如何在不使用 QTcpSockets 的情况下在 Qt 中创建插槽并将其连接到 TCP recv()?

我想在Qt中或在C++中为TCP中的recv()函数创建一个插槽,以便当套接字接收到数据时它会自动调用该插槽,我可以使用QTcpSockets来完成,但我不能'由于某些限制,我没有使用它们。目前我正在使用计时器从recv()函数接收数据。请指引我正确的方向。tcp.hifndefTCP_H#defineTCP_H#pragmaonce#include#include#include#include"config.h"#include"tcp_packets.h"#include"change_ending.h"#include"md5.h"#pragmacomment(lib,"Ws2

python - 客户端 Python 在没有 socket.close() 的情况下关闭我的 TCP 连接

我正在用Python开发一个TCP客户端,我遇到了下一个问题。我连接到服务器,我向它发送一些数据,它用预期的数据响应我,但在此之后我自己的应用程序(客户端)发送[FIN,ACK](用wireshark检查)。这是我的客户端应用程序:try:sock=socket(AF_INET,SOCK_STREAM)sock.bind((my_ip,my_port))sock.connect((sendAddress,sendPort))sock.send(joinRequest)joinResponse=sock.recv(18)printjoinResponseexceptsocket.time

sockets - socket recv() 是否强制刷新 socket send() 缓冲区?

在我的应用程序中,我向服务器发送了两条小消息(类似memcached的服务)。在类似Python的伪代码中,这看起来像:sock.send("addsome-key0")ignored=sock.recv(...)sock.send("incrsome-key1")new_value=sock.recv(...)由于服务器支持即发即弃式写入,我可以优化此代码使其看起来更像:sock.send("addsome-key0noreply")sock.send("incrsome-key1")new_value=sock.recv(...)但是,这需要更长的时间——此版本平均需要40毫秒,而

通过 Socket 进行 Java TCP 通信

我正在尝试使用TCP通过套接字进行通信。需要发送的数据是绘图,同时它正在绘制。因此,选择是发送所有点,或仅发送形状(点系列)。如果立即绘制会很好,发送点数似乎更好。它仅供本地使用,因此大量数据应该不是问题。现在我遇到的问题是了解套接字的工作原理。目前我的代码如下:while(true){try{Thread.sleep(10);}catch(InterruptedExceptione){}switch(connectionStatus){caseCONNECTED:if(isHost){try{oos.writeObject(myObject);}catch(IOExceptione)

c# - 如何在 C# TCP/IP 中的 Socket.Connect 中传递用户名和密码

我有一台机器,我需要连接到它以将数据检索到文本文件中。为此,我有机器的IP地址、端口号、用户名、密码。现在我正在尝试连接到机器但我不知道在哪里传递要在我的C#代码中连接的机器的用户名和密码。请帮帮我。 最佳答案 评论已经给出了答案,总结一下:对于TCP协议(protocol),重要的只是如何连接A和B来实现数据传输。任何超出成功连接的事情都取决于您使用的内部应用程序协议(protocol)您需要服务的描述以及发送和接收的内容您从问候语“这里是客户”开始。这就是我假设的如何传输用户名和密码的方式。例如,在您的“这里是客户”消息之后,服

winsock - TCP IP recv() 函数未接收到来自服务器的回显消息

我在Windows中使用TCPIP套接字程序,我在其中创建了一个客户端用于将数据传输到服务器和服务器正在将消息回显给客户端(请注意,服务器已通过telnet应用程序正常工作)。但是当我从客户端发送测试消息时,它会在服务器端收到,但是当我试图在客户端中读取回显消息时>使用recv()函数的一侧我没有得到回显消息,但是无论我在服务器侧输入什么,它都会显示在客户端侧接收recv()函数我通过此链接关注程序http://cs.baylor.edu/~donahoo/practical/CSockets/code/TCPEchoClientWS.c有人有什么解决办法吗?

c - 使用 TCP/IP : recv() blocks 的套接字编程

我正在开发一个简单的客户端/服务器项目,它将一大块数据从客户端移动到服务器。我使用TCP/IP。服务器设置监听套接字,客户端连接。首先传输一个短的16字节“header”,其中包含一些信息,包括之后要传输的数据量。然后传输大块(大约2MB),即send(socketDesc,(void*)myBuffer,bigChunkSize,0);和recv(socketDescPeer,(void*)myBuffer,bigChunkSize,0)首先,我使用winsock2在Windows下实现了客户端,它可以正常工作。我现在尝试将此实现移植到linux,在这种情况下,服务器端永远不会从re

perl - 在 perl 中为 TCP 客户端正确使用 IO::Socket::INET

我有一个关于我应该如何使用IO::Socket的问题;我有一个应该持续运行的脚本,用于监视Asterisk服务器的某些事件。当这些事件发生时,脚本会通过TCP套接字将事件中的数据发送到另一台服务器。我发现有时候,套接字会关闭。我的问题是我是否应该使用单个套接字,并让它永远打开(并弄清楚为什么+阻止它关闭),或者我应该为发送的每一位数据打开和关闭一个新套接字?我对这类事情的经验非常少,而且我已经阅读了所有文档但没有找到我正在寻找的答案。以下是我到目前为止所获得的示例:#!/usr/bin/perluseAsterisk::AMI;useIO::Socket;usestrict;usewa

python - socket.recv() 什么时候引发异常?

我正在使用阻塞套接字,我对recv()很困惑,因为我没有找到任何关于它的合适文档。官方的似乎仅限于我。另一件让我感到困惑的事情是互联网上的人(以及这个网站上的人)说它不会引发任何阻塞套接字的异常,但它只是一直在等待。如果我粗暴地关闭服务器,它会抛出Errno10054(socket.error)。 最佳答案 简单来说,recv会在底层socket操作失败时抛出异常。问题在于它取决于您所使用的操作系统。在这里我可以猜到你在Windows上,因为10054是一个Windowserrorcode用于连接重置。幸运的是,套接字操作失败的时间