请假设我们可以区分不同TCP连接的数据包,如果是这样,那么我们能否在服务器端的唯一套接字上接受多个TCP连接?我知道服务器绑定在一个套接字上,并且在接受新连接时为新连接分配一个新套接字。我会覆盖ACCEPT systemcall?在服务器上的唯一一个套接字上处理多个TCP连接
回答
请假设,我们可以互相
区分不同的TCP连接的数据包你不能假设的。通过TCP连接应用程序不可见“数据包”。 TCP连接提供了一个字节流。你不能保证你读的下一个东西会是一个消息头,告诉你消息来自哪个客户端。
数据包边界不可见,但addr,port信息是。没有理由TCP套接字不能像UDP套接字一样工作,从而提供“来自addr,port的下n个字节”,其中n是任意的(与UDP不同)。 – user1055568
@ user1055568'addr.port'信息'通过TCP连接对应用程序不可见,而不是通过'getpeername()',它适用于套接字以及整个连接。我不知道你在说什么。 – EJP
我只是说这是伯克利套接字API的设计方式,与TCP协议是否定义应用程序级数据包边界无关。 – user1055568
- 1. whois的TCP套接字连接失败的一个服务器
- 2. 如何处理TCP C#套接字服务器中的多个活动连接?
- 3. Matlab的TCP/IP服务器套接字多个连接
- 4. 在Java中处理多个TCP连接(服务器端)
- 5. 处理多个客户端连接的Perl TCP服务器
- 6. NodeJS如何使用套接字处理多个TCP连接
- 7. 连接到两个不同端口上的服务器的TCP套接字
- 8. 处理多个套接字连接
- 9. Python套接字处理多个连接
- 10. java服务器来处理多个TCP连接
- 11. 用于多连接处理的Python套接字服务器
- 12. Netty TCP服务器,只需一个套接字连接就能服务多个请求
- 13. 如何在Java服务器上接受多个套接字连接
- 14. 一次可以在TCP套接字上写多少个字节?
- 15. 在Golang服务器中接受一个持久的tcp连接
- 16. 同一客户端上的多个websockets连接 - 服务器无法处理
- 17. 创建一个新的tcp套接字 - 服务器端
- 18. 处理(多线程)套接字服务器新服务器套接字
- 19. MongoError:无法连接到服务器上的第一个连接
- 20. 在WP7上创建一个套接字服务器
- 21. 在一台机器上连接两个(或多个)套接字客户端
- 22. IOexception发送一个对象到服务器(套接字连接)
- 23. 同一端口套接字上的多个连接C++
- 24. PHP能够处理多个TCP连接?
- 25. 流式套接字服务器在Linux中无法处理超过382个线程(每个连接一个)
- 26. 连接多个客户端的异步套接字服务器
- 27. 多个客户端 - 一个服务器连接带有套接字tcp/ip c#.net
- 28. Java服务器套接字:我的服务器套接字只允许客户端连接在同一个Internet连接上运行?
- 29. 在服务器上接受客户端的多个连接
- 30. 无法连接到其他PC的TCP套接字服务器
所以,你想在服务器*一个*套接字接收来自所有连接的所有数据?就像为UDP做的一样?然后,在TCP中不可能,因为它是一个连接的协议,每个连接都是一个独立的实体。 –
为什么?你提到的所有东西都已经由TCP完成了,并且每个接受的连接都以独立套接字的形式完成。你为什么认为你需要重新创建API? – EJP
@ EJP。认为我想用最小的延迟处理很多连接,所以最好是通过一个套接字来处理所有连接,而不是为每个连接创建一个套接字,但ACCEPT systemcall为每个接受的连接返回单独的套接字。正因为如此,我认为我应该重写ACCEPT systemcall! – MSH