草庐IT

accepted

全部标签

java - 应用程序卡在 serverSocket.accept() 并提供已在第二次调用线程时使用的绑定(bind)异常地址

我为套接字通信构建的应用程序有两个问题,首先我将尝试解释该应用程序的功能,然后我将详细介绍这两个问题。首先,我单击一个按钮,启动一个线程,该线程通过UDP套接字发送多播消息“组地址”。一旦任何设备收到消息,它们将通过TCP套接字发送响应,而我的设备将充当发送响应的设备的服务器。所以在调试之后我发现了第一个问题是clientSocket=serverSocket.accept();有时会卡住,应用程序会阻止所有内容并继续执行它,这可能会发生,因为udp信息可能永远不会到达在目的地,这意味着我创建的tcp服务器没有客户端。第一个问题:有什么方法可以使serverSocket.accept(

tcp - 为什么UDP没有 "accept()"?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我是从实际意义上问的。在TCP中,accept()将为每个connect()提供新的套接字。它允许仅与一个服务器端口进行多个并发通信。问题是为什么我们在UDP中没有这么方便?不要告诉我UDP是无连接的,因此......从逻辑上讲,accept()与此无关(底层IP无论如何都是无连接的)。一个后果是您必须应用大量UDP端口,这可能会使防火墙设置复杂化。所以我

sockets - accept() 和 TCP 数据包传递的行为

Java文档说ServerSocket,x正在监听端口5555返回一个新的Socket,y,来自其accept()方法,这样:y的本地端口设置为5555;和x继续在端口5555上监听以accept()新连接。经验证,确实是上述情况。但是,Port上的这个维基百科条目有这样的话:Thisprocessisknownaslisteningandinvolvesthereceiptofarequestonthewell-knownportandreestablishingone-to-oneserver-clientcommunicationsonanotherprivateport,sot

language-agnostic - 更多 TCP 和 POSIX 套接字 listen() 和 accept() 语义

情况:服务器调用listen()(但不是accept()!)。客户端向服务器发送SYN。服务器获取SYN,然后将SYN/ACK发送回客户端。但是,客户端现在挂断/死亡,因此它永远不会向服务器发回ACK。连接处于SYN_SENT状态。现在另一个客户端发送一个SYN,从服务器得到一个SYN/ACK,然后发回一个ACK​​。此连接现在处于ESTABLISHED状态。现在服务器终于调用了accept()。怎么了?accept()是否在第一个错误连接上阻塞,直到发生某种超时?它是否首先检查队列中是否存在任何已建立的连接并返回这些连接? 最佳答案

sockets - TCP_NODELAY 是否通过 accept 得到继承?

如果我用TCP_NODELAY创建一个TCP套接字启用选项并将其用于listen对于新连接,accept会返回新套接字吗?还有TCP_NODELAY启用?不同的套接字可以有不同的配置选项,尽管accept返回的套接字是有意义的从生成它们的监听套接字继承它们的选项。这取决于实现吗? 最佳答案 是的,监听套接字上的TCP_NODELAY被接受的套接字继承。在Linux4.18.0上测试。 关于sockets-TCP_NODELAY是否通过accept得到继承?,我们在StackOverflo

connect()、accept() 和 select() 发生顺序

我是C新手,刚注意到客户端的connect()函数只要TCP三向hand-抖完了。我的意思是connect()甚至可以在调用服务器端的accept()之前返回(如果我错了请纠正我)。基于这些知识,我的问题是,当我之后在客户端调用select()并观察文件描述符以等待它可写时,select()成功返回,也就是说服务器端已经调用了accept(),现在我可以安全地向服务器端写入了,对吧?非常感谢您的宝贵时间。intflags=fcntl(fd,F_GETFL);flags|=O_NONBLOCK;fcntl(fd,F_SETFL,flags);if(connect(fd,(structso

ServerSocket.accept() 返回的 Java 客户端套接字

这更像是一个一般的套接字问题。在Java中,如果我有一个绑定(bind)到特定端口的ServerSocket,比如4444,我知道它正在监听连接请求。accept()方法会阻塞,直到收到连接请求并返回一个新的Socket以与客户端通信。返回的Socket的远程端点是客户端的IP地址和端口。但是,让我感到困惑的是,返回的Socket的本地端口与正在监听请求的ServerSocket的端口号相同(在本例中为4444)。我以为两个套接字不能绑定(bind)到同一个端口?返回的Socket不会是服务器上的另一个端口吗? 最佳答案 两个Ser

java - accept() 方法和 tcp/ip 握手

我将javaServerSocket类用于服务器应用程序。accept()方法是否参与tcp/ip握手?正如我在tcp/ip转储和命令netstat中看到的那样,客户端在调用accept方法并返回Socket对象之前建立连接。是java问题,还是我不理解accept()语义? 最佳答案 通常在Unix中,如果您用listen()标记套接字,操作系统就会开始接受连接。当您调用accept()函数时,操作系统只是交出已经打开的连接。Listen采用一个参数,该参数允许您指定操作系统允许的“未接受”打开连接数(即队列的大小)。

c - 套接字编程 - listen() 和 accept() 有什么区别?

我一直在阅读thistutorial了解套接字编程。似乎listen()和accept()系统调用都做同样的事情,即阻塞并等待客户端连接到使用创建的套接字socket()系统调用。为什么为此需要两个单独的步骤?为什么不只使用一个系统调用?顺便说一句,我搜索了这个问题并找到了类似的问题,但没有一个答案令人满意。例如,其中一个说accept()创建套接字,这是没有意义的,因为我知道套接字是由socket()创建的。 最佳答案 listen()函数基本上在内部套接字结构中设置一个标志,将套接字标记为被动监听套接字,您可以在该套接字上调用a

sockets - 同时使用 accept() 和 select() ?

我有一个事件驱动的网络服务器程序。该程序接受来自其他主机上其他进程的连接。同一远程IP上的不同端口可能有许多短暂的连接。目前,我有一个while(1)调用accept()的循环然后生成一个线程来处理新连接。读取消息后关闭每个连接。在远程端,发送消息后关闭连接。我想通过缓存打开的套接字FD来消除建立和拆除连接的开销。在发件人方面,这很简单-我只是不关闭连接,并保持它们在身边。在接收端,有点难。我知道我可以存储accept()返回的FD在结构中并使用poll()监听所有此类套接字中的消息或select(),但我想同时通过accept()监听新连接和监听所有缓存的连接。如果我使用两个线程,一