草庐IT

tcp-accept

全部标签

Python TCP 套接字数据有时会丢失部分。套接字溢出?

简短描述:客户端通过TCP套接字发送服务器数据。数据长度不一,是由分隔符“~~~*~~~”分割的字符串在大多数情况下,它工作正常。一阵子。几分钟后,数据到处都是。所以我开始跟踪问题,但数据最终出现在错误的位置,因为完整的事情还没有通过。所有内容都进入服务器脚本,并由不同的分隔符-NewData-*解析,然后放入队列中。这是代码:是的,我知道缓冲区很大。不,我不会一次发送那种大小的数据,但我一直在玩弄它。classservice(SocketServer.BaseRequestHandler):defhandle(self):data='dummy'#print"Clientconnec

java - 多次读取时,从 TCP 服务器的读取挂起

我正在测试一些TCP代码,除了一个问题外,它似乎工作正常。当没有更多内容可读时,从套接字的读取挂​​起在其中一种方法中:这是TCP代码:packagecom.comp424.service;importjava.net.InetAddress;importjava.net.ServerSocket;importjava.net.Socket;importjava.net.UnknownHostException;importjava.io.IOException;importjava.util.concurrent.ExecutorService;importjava.util.con

php - TCP Keep-Alive PDO 连接参数

PHP的PDO(或它各自的PostgreSQLdriver)是否有启用TCPkeep-alive探测的连接配置选项likeJDBC?我遇到了一个问题,我们通过NAT建立连接,5分钟后连接断开(我无法更改),而我们在外部Postgres实例上运行的查询需要超过5分钟分钟运行,导致我们的客户端永远不会收到来自Postgres实例的响应并最终超时。 最佳答案 PDOPostgreSQL驱动程序建立在libpq客户端库之上。驱动程序允许以键/值对的形式在DSN中传递特定的libpq连接选项,其中包括TCPkeepalives选项。来自Pos

Delphi Indy TCP 连接到 RECON

我正在尝试弄清楚如何使用远程控制台建立连接和身份验证。本维基Wiki1还有这个Wiki2告诉我我需要构建一个数据包并将其发送到RECON,但我不知道该怎么做......我是网络新手,但由于我在那里搜索,所以我构建了这个:procedureTForm1.Button1Click(Sender:TObject);beginIdTCPClient1.Host:='127.0.0.1';IdTCPClient1.Port:=20001;IdTCPClient1.Connect;IdTcpClient1.IOHandler.Writeln('1234');ShowMessage(IdTcpCli

c - TCP socket编程中服务端如何判断消息是哪个客户端发送的

我们在项目中使用linuxTCP套接字。服务器正在等待使用accept()调用的连接请求,一旦来自客户端的连接请求到来,服务器就会创建一个线程,该线程将处理与客户端的进一步通信。任何人都可以让我知道服务器是否可以确定发送消息的客户端(进程ID)。如果有任何消息来自驱动程序,我们的服务器会将该消息广播给所有客户端。在该领域的一个错误中,UI挂起,UI团队提示他们没有收到消息。但是我们看到了日志,并且我们正在向所有连接的客户端广播。所以我们只是想证明我们正在向哪个进程ID发送消息。 最佳答案 不,您只有客户端的IP地址和源端口。在大多数

c - 如果客户端发送多个缓冲区而没有休眠,为什么 tcp 服务器会收到一个缓冲区?

如果我在一段时间后发送缓冲区,我的客户端将正确地发送到服务器。但是,如果我在没有间隔的情况下发送消息,服务器会收到一个缓冲区。例如,如果我发送两个缓冲区“message1”和“message2”,并在这两个发送操作之间放置1秒sleep,服务器会收到2个缓冲区并打印message1“\n”message2。但是,如果我在没有sleep的情况下发送这2个缓冲区,服务器将获得1个缓冲区并打印message1message2。我不明白为什么会这样。我的服务器和客户端代码如下。服务器.c#include#include//strlen#include//strlen#include#inclu

sockets - Haskell tcp 服务器,fd 错误太大

我一直在尝试为Go客户端编写一个Haskell服务器。对于HaskellTCP服务器,我只是使用Network.Socket。每当我尝试运行hWaitForInput时,我都会收到此错误:fdReady:fdistoobig.这是服务器代码-connHandler::(Socket,SockAddr)->IO()connHandler(sock,_)=doputStrLn"StartingHandler"handleGo客户端正在接收并打印服务器的消息(“HelloClient!”)但是haskell服务器在打印“等待输入”后立即抛出错误 最佳答案

C# 如何手动清除 TCP 套接字缓冲区?

我正在编写一个TCP服务器来打开一个端口并与一些只将字符串数据作为字节数组发送的硬件通信。环境在Unity中,所以我使用异步回调来避免阻塞程序。这似乎工作正常,连接有效,收到正确的数据,我可以向硬件发送消息,但套接字缓冲区永远不会清除。当我执行Socket.EndReceive(ar)时,数据只是堆积起来,不会清空。异步循环是如何工作的?我不明白为什么这段代码没有完成循环并清除缓冲区。我花了很多时间试图理解这个过程,但无法弄清楚为什么这段代码不起作用。protectedTcpListenerListenServer;protectedSocketSimNetSocket;protect

tcp - 哪种方法更适合在两个进程、本地 TCP/IP 连接或进程间通信之间发送图像流?

假设我必须复制流中的每个图像(我不能简单地访问具有任何互斥保护的数据,无论如何都必须复制),哪种方法更好,优缺点?我还想知道与在同一过程中使用图像相比,这意味着多少性能损失。谢谢 最佳答案 对于图像,IPC通过sharedmemory将是最佳选择。 关于tcp-哪种方法更适合在两个进程、本地TCP/IP连接或进程间通信之间发送图像流?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions

.net - 如何在自定义 TCP 客户端/服务器之间正确传递 XML 字符串?

我正在开发一个C++客户端/服务器项目,其中XML字符串通过TCP/IP连接传递。我的问题是关于指示已收到完整字符串的正确方法。我正在考虑空终止字符串或首先发送XML字符串的长度,以便客户端/服务器可以知道何时收到完整的字符串。客户端可以发送GET/SET命令,服务器可以回复,也可以发送连续的结果流。例如:客户端发送和服务器回复或者服务器可以发送一个连续的流:在这种情况下,客户端可能会在一次读取中收到:或者,如果发送了大量数据,则可能需要多次读取才能读取整个字符串。使用空终止字符似乎有点简单(如果字符串是unicode会中断?)并且发送长度值似乎也很尴尬:20或对于HTML文件的TX/