我有一个奇怪的查询。我了解到套接字是IP和端口的组合。那么什么是套接字描述符?它只是一个整数吗?它做了什么?
我可以在同一端口上使用不同的套接字描述符吗?如果是,那么那些可以是不同类型(TCP / UDP)吗?
我知道这些都是愚蠢的问题;我一直盲目地使用SD很长一段时间了:P
答案 0 :(得分:3)
TCP和UDP是独立的,因此您可以在同一端口上安装TCP和UDP套接字。
套接字描述符是指套接字,因为文件描述符是文件。
TCP连接实际上由元组定义:本地IP,本地端口,远程IP,远程端口。您可以使用相同的本地IP和端口建立多个连接,只要它们具有不同的远程IP和/或端口。
例如,Web服务器将其本地端口80用于所有连接。但是每个客户端连接要么来自不同的机器(因此是不同的远程IP),要么来自同一台机器上的不同套接字(因此它们将具有相同的远程IP但不同的远程端口)。
答案 1 :(得分:0)
套接字描述符是系统在要求它使用套接字调用创建套接字时返回的唯一整数。每个套接字都可以通过套接字描述符识别。
关于你问题的第二部分,你会得到一个不同的套接字描述符,用于同一个IP + PORT + PROTOCOL,所以是的,你可以在同一个端口上有tcp和udp套接字,但你会得到两个不同的套接字描述符
您应首先阅读以下网络编程教程:Beej's Network Programming Tutorial