Questions tagged «sockets»

双向进程间通信流的端点。这通常是指通过网络连接的过程流,但绝不限于此。不要与WebSocket(协议)或其他抽象(例如socket.io)混淆。

3
在同一套接字上发送/接收的并行调用是否有效?
我们可以在同一个套接字上从一个线程调用send并从另一个线程调用recv吗? 我们可以在同一套接字上从不同线程调用多个并行发送吗? 我知道好的设计应该避免这种情况,但是我不清楚这些系统API的行为方式。同样,我也找不到很好的文档。 方向上的任何指针都会有所帮助。
127 c  networking  sockets 

4
套接字API accept()函数如何工作?
套接字API是用于TCP / IP和UDP / IP通信的事实标准(即我们所知道的网络代码)。但是,它的核心功能之一accept()是不可思议的。 借用半正式的定义: 在服务器端使用accept()。它接受从远程客户端创建新的TCP连接的传入尝试,并创建与此连接的套接字地址对关联的新套接字。 换句话说,accept返回一个新的套接字,服务器可以通过该套接字与新连接的客户端进行通信。旧的套接字(在其上accept被调用)保持打开状态,在同一端口上,侦听新的连接。 accept工作如何?如何实施?在这个话题上有很多困惑。许多人声称接受会打开一个新端口,而您通过它与客户端进行通信。但这显然是不正确的,因为没有打开任何新端口。实际上,您可以通过同一端口与不同的客户端进行通信,但是如何进行呢?当多个线程recv在同一端口上调用时,数据如何知道去向? 我想这是客户端地址与套接字描述符相关联的东西,每当有数据通过时,recv它都会路由到正确的套接字,但是我不确定。 全面了解此机制的内部工作非常好。
126 networking  sockets  tcp 

10
java.net.SocketException:连接重置
我在尝试从套接字读取时遇到以下错误。我正在做readInt()该操作InputStream,并且收到此错误。仔细阅读文档,这表明连接的客户端部分关闭了连接。在这种情况下,我是服务器。 我可以访问客户端日志文件,但它没有关闭连接,实际上它的日志文件表明我正在关闭连接。那么,有人知道为什么会这样吗?还有什么要检查的?当本地资源可能达到阈值时,会发生这种情况吗? 我确实注意到我有以下几行: socket.setSoTimeout(10000); 就在 readInt()。这是有原因的(长话短说),但出于好奇,在某些情况下会导致所指示的错误吗?我在IDE中运行服务器,碰巧使IDE卡在断点上,然后我发现完全相同的错误开始出现在我自己的IDE日志中。 无论如何,仅提及它,希望它不会成为红色鲱鱼。:-(

5
TCP:两个不同的套接字可以共享一个端口吗?
这可能是一个非常基本的问题,但使我感到困惑。 两个连接的插座可以共享一个端口吗?我正在编写一个应能够处理超过100k并发连接的应用程序服务器,并且我们知道系统上可用的端口数约为60k(16位)。已连接的套接字被分配给新的(专用)端口,因此这意味着并发连接数受端口数限制,除非多个套接字可以共享同一端口。所以这个问题。 我在这里先向您的帮助表示感谢!


7
socket.shutdown与socket.close
我最近看到了一些看起来像这样的代码(袜子当然是套接字对象): sock.shutdown(socket.SHUT_RDWR) sock.close() 在套接字上调用shutdown然后关闭它的目的是什么?如果有所不同,则此套接字用于非阻塞IO。

6
套接字connect()vs bind()
两者connect()和bind()系统调用都将套接字文件描述符“关联”到一个地址(通常是ip /端口组合)。他们的原型是: int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 和 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 2个通话之间的确切区别是什么?什么时候应该使用connect(),什么时候使用bind()? 具体来说,在一些示例服务器客户端代码中,发现客户端正在使用connect()并且服务器正在使用该bind()调用。原因对我来说还不是很清楚。


4
将简单的套接字转换为SSL套接字
我编写了简单的C程序,这些程序使用套接字(“客户端”和“服务器”)。(UNIX / Linux使用) 服务器端只是创建一个套接字: sockfd = socket(AF_INET, SOCK_STREAM, 0); 然后将其绑定到sockaddr: bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)); 并收听(并接受和读取): listen(sockfd,5); newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); read(newsockfd,buffer,255); 客户端创建套接字,然后对其进行写入。 现在,我想以最简单,最田园,最整洁和最快的方式将这个简单的连接转换为SSL连接。 我试图将OpenSSL添加到我的项目中,但是找不到实现我想要的东西的简单方法。
115 c  linux  sockets  unix  ssl 

4
TCP回送连接与Unix域套接字性能
在需要与同一设备上运行的服务器进行通信的基于Android和iOS的应用程序上工作。当前使用TCP环回连接与App和Server通信(以用户层编写的App,使用Android NDK以C ++编写的服务器) 我想知道用Unix域套接字替换内部通信是否可以提高性能? 还是总的来说,有什么证据/理论证明Unix域套接字比TCP回送连接具有更好的性能?



6
使用JavaScript从浏览器连接到TCP套接字
我有一个vb.net应用程序,可以打开一个套接字并对其进行侦听。 我需要使用浏览器上运行的JavaScript通过此套接字与该应用程序通信。那就是我需要在此套接字上发送一些数据,以便正在此套接字上侦听的应用程序可以获取该数据,使用一些远程调用执行一些操作,并获取更多数据,然后将其放回我的JavaScript需要进行处理的套接字上在浏览器中阅读并打印。 香港专业教育学院尝试过,socket.io,websockify,但没有被证明是有用的。 因此,问题是,我正在尝试的甚至可能吗?有没有一种方法可以使运行在浏览器中的javascript可以连接到tcp套接字并发送一些数据,并在其上侦听套接字上的更多数据响应并将其打印到浏览器。 如果可能的话,有人可以指出正确的方向,这将有助于我确定目标。


5
Linux:是否有超时的套接字读取或接收?
如何尝试在超时的情况下从套接字读取数据?我知道,选择,pselect,轮询具有超时字段,但是使用它们会禁用tcp reno堆栈中的“ tcp快速路径”。 我唯一的想法是在循环中使用recv(fd,...,MSG_DONTWAIT)
105 c  linux  sockets  tcp 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.