标签: tcp

如何为新服务选择默认的TCP/IP端口?

在开发将在TCP/IP端口上侦听的应用程序时,应如何选择默认端口?假设此应用程序将安装在许多计算机上,并且需要避免端口冲突.

networking tcp

104
推荐指数
4
解决办法
5万
查看次数

Web服务器可以处理多少个套接字连接?

假如我要获得共享,虚拟或专用托管,我在某处读取服务器/机器一次只能处理64,000个TCP连接,这是真的吗?无论带宽如何,任何类型的托管处理有多少?我假设HTTP通过TCP工作.

这意味着只有64,000个用户可以连接到该网站,如果我想提供更多服务,我必须转移到网络农场吗?

hosting network-programming tcp tcplistener http

101
推荐指数
5
解决办法
10万
查看次数

HTTP使用UDP吗?

这可能是一个愚蠢的问题:

  • HTTP是否曾使用用户数据报协议?

例如:

如果使用HTTP传输MP3或视频,它是否在内部使用UDP进行传输?

udp tcp http

98
推荐指数
10
解决办法
16万
查看次数

TCP:两个不同的套接字可以共享一个端口吗?

这可能是一个非常基本的问题,但它让我感到困惑.

两个不同的连接插座可以共用一个端口吗?我正在编写一个应该能够处理超过10万个并发连接的应用服务器,而且我们知道系统上可用的端口数量大约为60k(16位).连接的套接字被分配给新的(专用)端口,因此这意味着并发连接的数量受端口数量的限制,除非多个套接字可以共享同一个端口.所以问题.

我在这里先向您的帮助表示感谢!

sockets port network-programming tcp

97
推荐指数
4
解决办法
10万
查看次数

TCP环回连接与Unix域套接字性能

在基于Android和iOS的应用程序上工作,该应用程序需要与在同一设备中运行的服务器进行通信.目前使用TCP环回连接与App和Server通信(用户层编写的应用程序,使用Android NDK用C++编写的服务器)

我想知道是否用Unix Domain socket替换内部通信会改善性能吗?

或者一般来说是否有任何证据/理论证明Unix Domain套接字会提供比TCP环回连接更好的性能?

unix sockets tcp loopback unix-socket

97
推荐指数
5
解决办法
6万
查看次数

Linux:是否有超时的套接字读取或recv?

如何尝试从超时的套接字读取数据?我知道,select,pselect,poll,有一个超时字段,但使用它们会禁用tcp reno stack中的"tcp fast-path".

我唯一的想法是在循环中使用recv(fd,...,MSG_DONTWAIT)

c sockets linux tcp

92
推荐指数
2
解决办法
13万
查看次数

我是否需要心跳以保持TCP连接打开?

我有两个通过TCP/IP进行通信的组件.组件A充当服务器/侦听器,组件B充当客户端.两者应该尽快沟通.任何时候都只能有一个连接(尽管这个问题不在此处).我公司的一位高级开发人员表示,我需要在两个组件之间使用应用程序级心跳,以确保连接保持打开状态.

我认为连接保持开放与TCP/IP,但我读过许多博客/网站,说这些应用程序之间的心跳是非常标准的做法.

我知道组件A心跳组件B的部分原因是,如果组件B存在通信问题(链路断开或组件B未运行),它可以通知支持.是否因任何其他原因需要心跳?比如确保经常出现"在管道中"保持开放的东西?

组件A当前每20秒检测一次组件B,如果在120​​秒内没有从组件B接收到任何内容,则关闭连接.然后,假设如果链路断开,组件B将定期尝试重新连接,则它继续侦听连接.这成功了.

重申我的问题:保持TCP/IP连接存活所需的心跳是否必要?

sockets tcp

91
推荐指数
5
解决办法
8万
查看次数

当您需要可靠的UDP时,您会使用什么?

如果您的TCP连接可能太慢并且UDP"连接"可能太不可靠,您使用什么?有各种标准的可靠UDP协议,你有什么经验吗?

请在每个回复中讨论一个协议,如果其他人已经提到您使用的协议,则考虑将其投票并使用评论进行详细说明(如果需要).

我对这里的各种选项感兴趣,其中TCP位于规模的一端而UDP位于另一端.提供了各种可靠的UDP选项,每个选项都带有TCP到UDP的一些元素.

我知道TCP通常是正确的选择,但是有一个备选列表通常可以帮助我们得出结论.像UDP,RUDP等基于UDP构建的东西各有利弊,你使用它们,你的经历是什么?

为了避免疑问,没有更多的信息,这是一个假设的问题,我希望这个问题会引出一个回复列表,详细说明需要做出决定的人可以使用的各种选项和备选方案.

sockets udp network-programming tcp

90
推荐指数
7
解决办法
6万
查看次数

为什么在没有尝试I/O的情况下检测TCP套接字是否被对等端正常关闭是不可能的?

作为最近一个问题的后续内容,我想知道为什么在没有尝试在TCP套接字上进行读/写操作的情况下,为什么Java不可能检测到套接字已被对等端正常关闭?无论是使用前NIO Socket还是NIO ,情况似乎都是如此SocketChannel.

当对等体正常关闭TCP连接时,连接两端的TCP堆栈都知道这一事实.服务器端(启动关闭的那个)最终处于状态FIN_WAIT2,而客户端(未明确响应关闭的那个)最终处于状态CLOSE_WAIT.为什么没有一个方法SocketSocketChannel可以查询TCP堆栈看到底层的TCP连接是否已经终止?是不是TCP堆栈没有提供这样的状态信息?或者这是一个设计决定,以避免昂贵的内核调用?

在已经发布了这个问题的答案的用户的帮助下,我想我会看到问题可能来自哪里.未明确关闭连接的一方最终处于TCP状态,CLOSE_WAIT这意味着连接正在关闭并等待一方发出自己的CLOSE操作.我认为isConnected返回trueisClosed返回是公平的false,但为什么不存在类似的东西isClosing呢?

以下是使用pre-NIO套接字的测试类.但使用NIO可获得相同的结果.

import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {
  public static void main(String[] args) throws Exception {
    final ServerSocket ss = new ServerSocket(12345);
    final Socket cs = ss.accept();
    System.out.println("Accepted connection");
    Thread.sleep(5000);
    cs.close();
    System.out.println("Closed connection");
    ss.close();
    Thread.sleep(100000);
  }
}


import java.net.Socket;

public class MyClient {
  public static …
Run Code Online (Sandbox Code Playgroud)

java sockets network-programming tcp

89
推荐指数
5
解决办法
3万
查看次数

TCP和UDP套接字可以使用相同的端口吗?

首先,在同一台服务器上同时使用UDP和TCP有什么问题吗?

其次,我可以使用相同的端口号吗?

sockets networking udp tcp

89
推荐指数
2
解决办法
5万
查看次数