
TCP 的包是不包含 IP 地址信息的,那是 IP 层上的事,但是有源端口和目的端口。
就是说,端口这一东西,是属于 TCP 知识范畴的。
我们知道两个进程,在计算机内部进行通信,可以有管道、内存共享、信号量、消息队列等方法。
而两个进程如果需要进行通讯最基本的一个前提是能够唯一的标识一个进程,在本地进程通讯中我们可以使用 「PID(进程标识符)」 来唯一标识一个进程。
但 PID 只在本地唯一,如果把两个进程放到了不同的两台计算机,然后他们要通信的话,PID 就不够用了,这样就需要另外一种手段了。
解决这个问题的方法就是在运输层使用 「协议端口号 (protocol port number)」 ,简称 「端口 (port)」
我们知道 IP 层的 ip 地址可以唯一标识主机,而 TCP 层协议和端口号可以唯一标识主机的一个进程,这样我们可以利用: 「ip地址+协议+端口号」 唯一标示网络中的一个进程。
在一些场合,也把这种唯一标识的模式称为 「套接字 (Socket)」 。
取值范围:49152 ~ 65535。
这类端口仅在客户端进程运行时才动态选择。
又叫 短暂端口号,表示这种端口的存在时间是短暂的,客户进程并不在意 *** 作系统给它分配的是哪一个端口号,因为客户进程之所以必须有一个端口号,是为了让传输层的实体能够找到自己。
理解:描述符就类似于Java中的引用变量,而 *** 作系统中的C语言并没有面向对象,没有引用变量和对象之说,因此需要用描述符来指向之前创建的Socket数据结构,来 *** 纵它完成网络 *** 作。
如果说描述符是用来在一台计算机内部识别套接字的机制,那么端口号就是用来让通信的另一方能够识别出套接字的机制 。
IPAddress remote_ip = ((SystemNetIPEndPoint)workerSocketRemoteEndPoint)Address;//获取远程连接IP
以上就是关于关于socket编程中的client端口问题全部的内容,包括:关于socket编程中的client端口问题、tcp通信中怎么获得客户端的端口号、Socket、描述符、端口号等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)