socket中的虚拟端口号port

端口号

协议端口号:

端口号的全名就是协议端口号,它用于应用层和传输成的交互,在创建一个套接字的时候需要知道ip地址和端口号,这里的端口号它是虚拟的,运输层协议中我们知道端口号是一个十六位的整数,那么就表示了0到65535这么多的端口号,他到底有什么用处呢。

如果说ip是确定网络中的唯一一台主机的话,那么ip加端口号是确定网络中唯一一台主机中的唯一一个进程,注意端口号指具有本地的意义,他只时为了标志本计算机应用层中的各个进程和运输层交互时的层间接口,在因特网中的不同计算机的端口号是没有关联的。

在etc/services文件中保留着绝大多数人们熟知的端口号。

协议端口号的分类:

1>.服务器端使用的端口号:这里面又分为两类,最重要的一类叫做熟知端口号或者系统端口号,数值为0~1023,这些数值可以在网址www.iana.org查到。IANA把这些端口号指派给了TCP/IP中最重要的一些应用程序,让所有的用户都知道。当一种新的应用程序出现后,IANA必须为他指派一个熟知端口,否则英特网上的其他应用进程就无法和他进行通信。另一类叫做登记端口号,这类端口号是为没有熟知端口号的应用程序使用的,使用这类端口号必须在IANA按照规定的手续等级以防止重复。

2>.客户端使用的端口号:数值为49152~65535,由于这类端口号尽在客户进程运行时才动态选择,因此又叫做短暂端口号是留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道客户进程所使用的端口号,因此可以把数据发送过去,通信结束后使用过的端口号就不复存在了。

时间: 2024-10-12 09:33:18

socket中的虚拟端口号port的相关文章

USB设备驱动开发之远程访问USB设备(二 USB设备虚拟端)

By Fanxiushu 2016-05-22 转载或引用请注明原始作者 接上文, 在处理好USB数据采集端的问题之后,接下来进入核心的部分,虚拟USB设备端的开发工作. 上文简单介绍过,需要开发虚拟总线驱动来模拟USB设备. 所谓虚拟总线驱动,就是安装于System系统设备下的一个驱动,由PnP管理器创建出一个虚拟的总线PDO设备, 我们的虚拟总线驱动Attach到这个PDO上,形成一个FDO功能设备驱动, 然后在我们的驱动中,根据需要创建出若干个 Child PDO设备, 这些 Child

linux socket中的SO_REUSEADDR

Welcome to the wonderful world of portability... or rather the lack of it. Before we start analyzing these two options in detail and take a deeper look how different operating systems handle them, it should be noted that the BSD socket implementation

Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)

声明:该博文以socket中,关闭输出流为例进行说明. 为了方便讲解,我们把DataOutputstream dout = new DataOutputStream(new BufferedOutputStream(mySocket.getOutputStream()));中的dout做为Socket输出流的代言.同样的,din是输入流的代言. 可以造成dout被关闭的操作有: 1.调用dout.close();或din.close();因为使用这种流关闭,会造成socket被关闭,所以输入输出

测试Socket中的一个中断的方法

/* * 本程序用于测试Socket中的一个中断的方法 * 对于进行的线程可以对其进行停止的中断 * 是通过SocketChannel channel = SocketChannel.open(new InetSocketAddress(host, port)); * */ package interruptible; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEve

单继承与多继承中的虚函数表和虚函数指针

首先,我们了解一下何为单继承,何为多继承?? 单继承:一个子类只有一个直接父类. 多继承:一个子类有两个或多个直接父类. 单继承中的虚函数表分析: 示例程序: #include <iostream> using namespace std; typedef void(*FUNC)(); class Base { public: virtual void func1() { cout << "Base::func1()" << endl; } virt

第八章:不要在构造和析构函数中使用虚函数

前言 本文将讲解一个新手C++程序员经常会犯的错误 - 在构造/析构函数中使用虚函数,并分析错误原因所在以及规避方法. 错误起因 首先,假设我们以一个实现交易的类为父类,然后一个实现买的类,一个实现卖的类为其子类. 这三个类的对象初始化过程中,都需要完成注册的这么一件事情 (函数).然而,各自注册的具体行为是不同的. 有些人会写出以下这样的代码: 1 class Transaction { 2 public: 3 Transaction(); // 父类构造函数 4 //...... 5 pri

c++中的虚函数

多态是指使用相同的函数名来访问函数不同的实现方法,即“一种接口,多种方法”,用相同的形式访问一组通用的运算,每个运算可能对应的行为不同. C++支持编译时多态和运行时多态,运算符重载和函数重载就是编译时多态,而派生类和虚函数实现运行时多态. 1.运行时多态: class A { public: virtual  void play() { cout<< "A:play"<<endl; } }: class B : public class A { public:

C++中的虚析构函数、纯虚析构函数详解

C++中析构函数可以为纯虚函数吗? 众所周知,在实现多态的过程中,一般将基类的析构函数设为virtual,以便在delete的时候能够多态的链式调用.那么析构函数是否可以设为纯虚呢? class CBase { public: CBase() { printf("CBase()\n"); } virtual ~CBase() = 0; // 析构函数是纯虚函数 }; 答案是可以,那么这样实现的目的是什么呢?当然是避免实例化. 但因为派生类不可能来实现基类的析构函数,所以基类析构函数虽然

ZeroMQ接口函数之 :zmq_msg_recv - 从一个socket中接受一个消息帧

ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_msg_recv zmq_msg_recv(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_msg_recv - 从一个socket中接受一个消息帧 Synopsis int zmq_msg_recv (zmq_msg_t *msg, void *socket, int flags); Description zmq_msg_recv()函数和zmq_recvmsg(3)函数是完全相同的,