1

我有一个奇怪的问题。我了解到套接字是 IP 和端口的组合。那么什么是套接字描述符呢?它只是一个整数吗?它有什么作用?

我可以在同一个端口上使用不同的套接字描述符吗?如果是,那么它们可以是不同的类型(TCP/UDP)吗?

我知道这些都是愚蠢的问题;我已经盲目使用 SD 很长一段时间了:P

4

2 回答 2

3

TCP 和 UDP 是独立的,因此您可以在同一个端口上拥有 TCP 和 UDP 套接字。

套接字描述符之于套接字,就像文件描述符之于文件一样。

一个 TCP 连接实际上是由元组定义的:本地 IP、本地端口、远程 IP、远程端口。您可以使用相同的本地 IP 和端口进行多个连接,只要它们具有不同的远程 IP 和/或端口即可。

例如,Web 服务器使用其本地端口 80 进行所有连接。但是每个客户端连接将来自不同的机器(因此不同的远程 IP)或同一台机器上的不同套接字(因此它们将具有相同的远程 IP 但不同的远程端口)。

于 2012-12-20T07:46:32.410 回答
0

套接字描述符是当您要求系统通过套接字调用创建套接字时系统返回的唯一整数。每个套接字都可以通过其套接字描述符来识别。

关于问题的第二部分,您将获得相同 IP+PORT+PROTOCOL 的不同套接字描述符,所以是的,您可以在同一个端口上拥有 tcp 和 udp 套接字,但您将获得两个不同的套接字描述符

您应该首先阅读这些网络编程教程: Beej 的网络编程教程

于 2012-12-20T07:38:27.700 回答