为了学习,我创建了两个简单的C程序来模拟以下套接字场景:循环中的客户机向服务器发送256个字节(带有send标志的MSG_DONTWAIT函数),但服务器不读取数据(recv函数)。为了简单起见,服务器不向客户端发送任何其他数据。我想测试send方法何时会返回一个错误。我使用linux ss -nmtp命令查看套接字缓冲区发生了什么。首先,服务器接收缓冲区(Recv-Q)和skmem r参数正在增长:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 768 0
我计划在Linux上用C语言实现一个特殊用途的TCP服务器。在做了一些研究之后,看起来有几种方法可以做到这一点,包括单线程,每个连接一个线程,等等。对于套接字,有像datagram vs stream和阻塞vs非阻塞这样的选项。
大部分通信将如下所示:
Client: request id [request info]
Server: status id [response info]
或
Client: request id [request info]
Server: status id [response info]
Client: additional request id [requ
就这样。我以前从未见过。我正在尝试Tcp Holepunching。
一个客户端应该既是客户端又是服务器(对于其他客户端)。
我得到了一个例外。有没有人知道这个问题?
java.net.NoRouteToHostException: Cannot assign requested address
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at