草庐IT

socket_handle

全部标签

c# - Socket.Receive() 仅在逐步调试代码时才按预期工作

我是套接字编程的新手。我有一个用C#编写的小应用程序,它使用COM端口连接到“键映射器”设备,该设备仅在应用程序发送匹配命令时才响应。例如:如果我需要从映射器获取一些引脚号,我发送了一个十六进制命令。然后我收到正确的回复。现在,我正在尝试使用具有设备唯一IP地址的套接字连接来执行相同的事件,如下所示。privatevoidbutton1_Click(objectsender,EventArgse){byte[]sendCommand=newbyte[]{0x02,0x24,0x31,0x95,0x0A,0x0D,0x03};byte[]ReceivedVal=newbyte[1024]

sockets - 如何模拟 boost::asio::write 超时

我正在尝试用超时模拟boost::asio::write。或者你可以说,我正在尝试使用带有超时的boost::asio::async_write。如我所见,boost::asio::write会阻塞,直到所有数据都在另一侧被写入和读取。这种功能当然需要超时。那么,通读thissimpleanswerhere由RobertHegner演示如何使用timeout执行boost::asio::async_read,我正在尝试采用相同的逻辑通过这样做来写:size_twrite_data_with_time_out(){longtime_out_secs=2;boost::optionalti

sockets - 当内部缓冲区填满时 TCP 会发生什么

假设我们有以下TCP套接字设置,其中客户端向服务器发送任意数据。将以下内容视为伪代码。defclient():whileTrue:data=source.get_data()client_socket.send(data)服务器读取数据并使用它来做某事...defserver():whileTrue:data+=socket.recv(4096)parsed_data=parse_data(data)cpu_intensive_task(parsed_data)让我们假设客户端发送数据的速度比服务器处理的速度快得多。内部网络缓冲区可以填满吗?我假设答案是肯定的......如果是这样,那

sockets - Linux 上的 ZeroMQ 和 TCP 重传

我无法理解在TCP必须尝试重新传输消息的情况下哪些套接字类型会受到负面影响。我们有一个分布式系统,它为内部进程以及外部设备和应用程序使用进程内和TCP连接的组合。我担心的是,如果有大量流量导致延迟和丢包,则TCP重传将导致系统延迟。我想避免的是一个应用程序在队列中编译消息等待发送(通过单个ZeroMQTCP套接字),因为TCP强制套接字重复重新传输从未发送确认的消息。这是使用ZeroMQ时可能发生的问题吗?目前我在Linux操作系统上使用PUSH/PULL。或者这不是一个问题,如果不是,为什么?来自外部设备/应用程序的消息不提供陈旧数据至关重要。 最佳答案

c# - TCP Socket.Connect 正在生成误报

我在使用C#中的Socket.Connect方法时遇到了非常奇怪的行为。我正在尝试将TCPSocket.Connect连接到有效的IP但已关闭端口,并且该方法仍在继续,就好像我已成功连接一样。当我用数据包嗅探发生了什么时,我看到应用程序正在从远程机器接收RST数据包。然而,从现有的跟踪可以清楚地看出,connect方法没有抛出异常。知道是什么原因造成的吗?运行的代码基本就是这样IPEndPointiep=newIPEndPoint(System.Net.IPAddress.Parse(m_ipAddress),m_port);SockettcpSocket=newSocket(Addr

sockets - 如何控制 Scala 远程参与者的 TCP_NODELAY 设置?

我正在使用Scala的远程参与者,但往返时间(即使是一条微不足道的消息)是80毫秒,大概是由于底层套接字没有禁用TCP/IPNagle算法(也称为TCP_NODELAY),或者至少这是一些具有JavaRMI经验的人告诉我的。我在客户端中为获取到远程参与者的链接所做的一切就是valserver=select(Node("127.0.0.1",12111),'server)有什么方法可以获取底层套接字并对其调用java.net.Socket.setTcpNoDelay()吗? 最佳答案 如果您需要在不修改Scala源代码的情况下在底层S

sockets - 使用 J2ME 进行套接字编程

如何使用J2ME连接到TcpServer(使用ip和端口)?我想向服务器发送请求并获得响应! 最佳答案 我的问题用这段代码解决了:importjavax.microedition.midlet.*;importjavax.microedition.lcdui.*;importjava.io.*;importjavax.microedition.io.*;StreamConnectionconnection=(StreamConnection)Connector.open("socket://IP:Port");PrintStream

python - 扭曲的 Python : Max Packet Size? 嵌入式 socket ?

我正在为服务器端实现基于Twisted的客户端-服务器解决方案,例如和客户端的Android手机。因为Andoird模拟器不接收大于1500b(或更小?)的TCP数据包,所以我需要能够在服务器端对数据包进行分块。如果没有在每次“transport.write”之后刷新套接字,Twisted会缓冲传出数据,因此如果没有某种手动或自动刷新/maxpacketsize函数,分块将毫无用处。我如何在Twisted中执行此操作?我熟悉“reactor.doSelect(1)”函数,但由于我使用的是EPollreact器(出于可伸缩性和性能原因),我无法使用doSelect。是否可以更改Twist

C# TCP Socket流消息混淆

我正在尝试编写一个C#TCP服务器并连接我的Web应用程序。这是我正在关注的教程。Link我设法启动了服务器,但我从我的网络应用程序收到的消息是加密的。C#代码段usingSystem;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Security.Cryptography;usingSystem.Text;usingSystem.Text.RegularExpressions;namespaceApplication{classMainClass{publicstaticvoidMain(){TcpListenerserver

sockets - 服务器不发送 SYN+ACK

我有一个客户端和一个服务器。它们在同一台机器上运行时工作正常,但是当我尝试从网络外部连接客户端时,我的服务器不会发送SYN+ACK数据包来响应SYN数据包。使用Wireshark,我可以看到来自客户端的SYN数据包,但我没有看到发送到客户端的SYN+ACK数据包。我找到了一些解决方案,说要关闭TCP窗口缩放和TCP时间戳,但这对我不起作用。另外,在服务器端使用netstat-ln命令,我可以看到tcp000.0.0.0:550000.0.0.0:*LISTEN这是服务器端的Wireshark输出:这是我的IP表: 最佳答案 您必须评