0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详谈TCP网络编程的套接字和端口

如意 来源:百家号 作者:米粒教育 2020-07-01 10:09 次阅读

网络中的两台计算机进行通信时,除了确定计算机在网络中的IP地址外,还需要确定计算机中的一个端口,端口并不是实际的物理设备,它是一个应用程序,这个应用程序来负责两台计算机的通信。

一个IP地址标识了一台主机(服务器),主机可以提供多种服务,如web服务、ftp服务、远程桌面等。主机的每个服务都会等待客户端的连接,客户端如何区别这些服务呢?这就需要端口来区分了。

端口被规定为一个在0~65535之间的整数,这个整数和提供服务的应用程序关联。如web服务一般是80端口,ftp服务一般是21端口、远程桌面一般是3389端口。

当我们通过客户端浏览器访问一个网站时,在浏览器地址栏中输入该网站的网址,并不需要输入80端口号。这是因为web服务默认就是80端口号,当客户端以http协议访问主机时,主机会默认这是访问web服务。

在同一台计算机上端口号不能重复,否则,就会产生端口号冲突。程序员或计算机管理员在分配端口号时,需要遵循下面的规则:

(1)1~1023之间的端口号,是由ICANN来管理的,不能分配给用户自己的应用程序;

(3)1024~5000一般被TCP/IP程序作为临时端口号使用;

(4)分配的端口号不能发生冲突;

(4)应分配数值大于5000的端口号给用户开发的应用程序。

TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。套接字用(IP地址:端口号)表示,区分不同应用程序进程间的网络通信和连接,套接字主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。

详谈TCP网络编程的套接字和端口

TCP使用套接字传输数据

Java语言中,使用Socket类来创建套接字,使用Socket类在两台计算机之间进行通信时,是有主次之分的,一个称为服务器程序,一个称为客户端程序。在服务器端使用ServerSocket类创建套接字,主要是监听指定的端口,等待客户端的连接;在客户端使用Socket类创建套接字,用于连接服务器端的套接字。服务器端和客户端的套接字的IP地址和端口号要一致。

详谈TCP网络编程的套接字和端口

客户端和服务端通信过程

在服务器端创建ServerSocket对象,并绑定监听端口。调用ServerSocket对象的accept()方法监听客户端的请求。与客户端建立连接后,它会返回一个已连接的Socket对象,并通过输入流读取客户端发送的请求信息,然后通过输出流向客户端发送响应信息,最后关闭socket及相关资源。

在客户端创建Socket对象,需要指定连接服务器的地址和端口号,和服务器建立连接后,通过输出流向服务端发送请求信息,然后通过输入流获取服务器的响应信息,最后关闭socket及相关资源。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1263

    浏览量

    78253
  • 端口
    +关注

    关注

    4

    文章

    820

    浏览量

    31570
  • 套接字
    +关注

    关注

    0

    文章

    4

    浏览量

    1830
收藏 人收藏

    评论

    相关推荐

    【MiCOKit试用体验】庆科MiCO系统篇(5)MiCO 套接

    示例示例效果一、网络套接Socket 套接,是源IP地址和目的IP地址以及源端口号和目的
    发表于 10-24 17:05

    TCP/IP、Http、Socket的区别

    )。  通过Socket,我们才能使用TCP/IP协议。  实际上,Socket跟TCP/IP协议没有必然的联系。  Socket编程接口在设计的时候,就希望也能适应其他的网络协议。 
    发表于 04-06 18:46

    UNIX域套接

    UNIX域套接用于在同一台计算机上运行的进程之间的通信。虽然因特网域套接可用于同一目的,但UNIX域套接
    发表于 09-02 11:59

    未使用keep-alive设置关闭的套接

    TCP。H)。不幸的是,NETA PrimeSimuldIsSub是单独定义的。在我看来,NETSyPrimeValuiSoSub应该定义为无效的套接。至少两个都应该有一个共同的父定义。但是回到原来
    发表于 09-14 15:42

    关闭没有网络连接的套接时,未释放数据包堆

    连接到网络I,然后使用TCPIPPUTCPY关闭功能关闭套接,除了分组存储器W以外,所有的内存都被释放了。HICH大约是200节。如果我尝试了足够的连接,堆最终会用完,并且我不能再
    发表于 12-07 14:53

    端点和套接怎么配置

    我有3个端点2个散列端点和1个端点。我想实现一个SLaveFIFO接口。是否有一个消费者的P-端口套接足以将数据从2个输出端点传输出去,我是否应该创建另一个消费者P-端口
    发表于 02-12 14:00

    交换机网络从Soft_AP到Infrastructure后,套接始终返回无效

    与以下代码的客户端连接通过这个实现,TCPPOEN函数返回一个有效的套接,但是在进入无限循环之后,我们通过在网页中配置网络来配置网络处于基础结构模式。当
    发表于 04-24 09:57

    STM32例程能否与MFC网络套接通信?

    如题。。想自己写一个PC上的MFC界面。不要求太高的实时性和过大过高的传输数据量,偶尔一次传输几十节即可,不知道STM32例程能否与MFC网络套接通信。如果可以就入手一套了,另外,
    发表于 08-02 04:36

    如何通过socket系统调用创建一个套接

    面试被问到TCP/UDP的bind函数设计,所以前来补一下套接部分的内容套接:进程间通信的方法:可以在同一台机器或者
    发表于 12-24 06:38

    一文读懂RT-Thread的SAL套接抽象层

    等函数,用于系统中大部分网络开发应用。往下第二部分为 SAL 套接抽象层,通过它 RT-Thread 系统能够适配下层不同的网络协议栈,并提供给上层统一的
    发表于 04-08 15:44

    RTT网络框架及SAL套接抽象层介绍

    基于自己对各层级的理解,作为划分依据。应用编程、协议栈与网卡驱动首先请允许我简单粗暴地把所有基于协议栈应用接口开发的相关代码,都归属于应用编程下,在带操作系统的情况下,通常协议栈都会提供套接
    发表于 07-28 11:40

    如何将ESP8266与Windows计算机上运行的tcp套接服务器程序连接?

    我正在尝试将 ESP8266 与在我的 Windows 计算机上运行的 tcp 套接服务器程序连接,我开发了一个 C# 应用程序运行并列出到 IP 172.16.1.85 端口 65
    发表于 02-23 07:09

    如何在iMXRT1176上的LwIP中使用TCP套接

    作为套接类型,使用 ICMP 作为套接协议。 lwip_socket(AF_INET, SOCK_RAW, IP_PROTO_ICMP); 我想将 SOCK_STREAM 创建
    发表于 06-02 10:10

    TCP_IP网络编程技术基础.王雷_部分2

    教材相比,本书主要的特点为:在注重阐述tcp/ip网络通信原理与套接字api编程原理的基础上,通过对例程的深人剖析,深入浅出地介绍服务器与客户软件的
    发表于 04-19 09:54 2次下载

    TCP_IP网络编程技术基础.王雷_部分1

    教材相比,本书主要的特点为:在注重阐述tcp/ip网络通信原理与套接字api编程原理的基础上,通过对例程的深人剖析,深入浅出地介绍服务器与客户软件的
    发表于 04-19 09:54 4次下载