草庐IT

接受端

全部标签

c - 接受()函数; C中的简单tcp服务器

我正在学习C语言的套接字编程并下载了一个简单的tcp服务器源文件。我理解这些函数中除第二个参数之外的每一行:accept(socket_fd,(structsockaddr*)&client,&length);bind(socket_fd,(structsockaddr*)&server,length);accept+bind函数是"sys/types.h"&"sys/socket.h"中的典型函数,手册页将其描述为指向结构的指针,但我仍然不明白这是什么真正发生在这里。有人可以解释一下第二个参数是怎么回事吗?括号、指针和地址符号在同一个表达式中让我感到困惑。提前致谢!

tcp - 二郎:gen_tcp:接受限制

我很感兴趣gen_tcp:accept函数的限制是什么?我的意思是什么是最大并发连接数?或者如何配置?(gen_tcp设置、ulimit或其他)get_tcp每秒可以接受多少连接? 最佳答案 最大并发连接数将取决于操作系统。在unix系统上,它将受到nfdsulimit的限制,以及内核配置为处理的最大连接数。每秒接受的连接数主要取决于您的应用程序代码。它必须及时为请求提供服务。待处理连接请求的最大数量由listen函数的backlog选项指定。大多数系统限制最大积压大小,在linux和freebsd上这个选项被命名为somaxcon

c++ - boost tcp 接受器和 boost tcp 套接字的 keep_alive 选项

我有几个问题,都与keep_alive有关。basic_socket_acceptor::keep_alive之间有什么区别?和basic_stream_socket::keep_alive?什么时候使用哪个?我们是否需要为ip::tcp::acceptor使用任何类型的keep_alive?这对我来说没有意义,因为接受器本身没有没有连接,但也有一个keep_alive选项,因此困惑。如果设置了keep_alive,那么当BoostAsio检测到连接中断时,它的行为是什么?它如何/何时通知用户代码?它会抛出异常吗?如果是这样,哪个异常(exception)?我在文档中没有看到任何此类详

sockets - 三向握手后是否发生接受事件?

我正在使用套接字编程在Linux(客户端和服务器)上编写应用程序。我遇到过这种情况,我的服务器应用程序从不响应另一端的初始SYN数据包。我还在调试这个问题。因为我的服务器正在监听一个端口,所以它从不生成接受事件。accept事件是在TCP握手完成后生成还是在收到初始SYN数据包时生成?一些有用的链接,会很有帮助。最好的 最佳答案 IstheaccepteventisgeneratedaftertheTCPhandshakeisdone是的。ORtheaccepteventisgeneratedwhentheinitialSYNpac

python - 如何在 python 中获取新接受的连接的端口号?

当我在服务器上创建套接字并接受传入连接时:conn,addr=s.accept()printconn.getsockname()和prints.getsockname()都打印出相同的端口号。我认为“conn”应该代表一个新套接字。如何获取这个新套接字的端口号?谢谢! 最佳答案 本地端口保持不变。你想要的是远程端的端口。您可以为此使用getpeername(或accept的返回值的第二个元素)。 关于python-如何在python中获取新接受的连接的端口号?,我们在StackOverf

sockets - 如何创建将监听特定端口并接受 TCP 连接(非 https)的 servlet

我需要创建servlet,它将监听某个特定端口(如serverSocket.accept()),生成新线程(如普通servlet)并将套接字(或仅输入流和输出流)传递给我的代码。此连接与http无关。我需要读取和写入二进制数据以打开连接。Tomcat可以吗?从哪里开始?我已经搜索了GenericSocket示例,但我看到从GenericSocket继承的servlet仍然必须在web.xml中配置一些url-pattern-但这是特定于http的。 最佳答案 很多年前,当servlet首次引入Java时,关于servlet编程的最好

c++ - Boost-asio 在单个 (TCP) 接受器上监听多个 IP 地址

boostTCP接受器可以通过使用端点构造函数连接起来,端点构造函数只接受端口号作为参数,在这种情况下,它将监听所有IP地址/NIC。是否有可能让接受者收听选定的IP地址?或者我是否必须为我感兴趣的每个IP地址创建一个接受器?查看文档,我找不到任何迹象表明这是可能的。我已经好几年没看过套接字API了,但我猜API并没有直接允许这样做。 最佳答案 有无限制的聆听和有限制的聆听。unbound意味着你听所有的NICs,绑定(bind)-到特定的一个。不可能选择一些NIC,我认为因为同样的情况可以通过为每个NIC提供专门的接受器来实现

tcp - 为什么 TCP Server 在接受连接后会立即发送 FIN?

从ethreal数据包捕获中,我看到以下对我来说很奇怪的行为:Client-->Server[SYN]Server-->Client[SYN,ACK]Client-->Server[ACK]Server-->Client[FIN,ACK]Client-->Server[ACK]Client-->Server[TCPSegmentofareassembledPDU](Idon'tknowwhatthismeans)Server-->Client[RST]关于为什么会发生这种情况有什么想法吗?此外,服务器端口是6000。这会导致任何问题吗?我的其他疑问:为什么会有FIN、ACK?不应该只有

sockets - 当服务器套接字接受客户端套接字时到底发生了什么?

我正在学习套接字编程,服务器套接字accept()让我很困惑。我写了两个serversocketaccept()的场景,大家看看:当服务器套接字执行accept()时,它会创建一个新的(客户端)套接字,该套接字绑定(bind)到与服务器套接字所在端口不同的端口边界。因此套接字通信是通过新绑定(bind)的端口完成的,服务器套接字(仅用于accept())正在等待原始绑定(bind)端口上的另一个客户端连接。我认为这不太正确,因为(1)端口与单个进程匹配,以及(2)套接字接受是进程内部的事情,单个进程可以有多个套接字。所以想到了第二种情况,基于一些stackoverflow的答案:当服务

sockets - ZeroMQ可以用来接受传统的socket请求吗?

我正在尝试使用ZeroMQ重写我们的一个旧服务器,现在我有以下服务器设置(适用于Zmq请求):using(varcontext=ZmqContext.Create())using(varserver=context.CreateSocket(SocketType.REP)){server.Bind("tcp://x.x.x.x:5705");while(true){...}如果我使用Zmq客户端库连接context.CreateSocket(SocketType.REQ),这种设置工作正常但不幸的是,我们有很多遗留代码需要连接到此服务器,并且套接字是使用.net套接字库创建的:Sock