• socket编程学习-------套接字概述


    前段时间学习了一下套接字编程,这里先简单介绍一下关于套接字

    1.什么是套接字编程:

    源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。

    • 网络化网络化的应用程序在开始任何通讯之前都必须要创建套接字,没有它就完全没办法通讯
    • 一开始,套接字被设计用在同一台主机上多个应用程序之间的通讯,这也叫进程间通讯,或IPC
    • 套接字有两种,分别是基于文件型的和基于网络型的
    • AF_UNIX表示”地址家族:UNIX” –>基于文件的AF_INET表示”地址家族:Internet”–>基于网络的
    • python只支持AF_INET、AF_UNIX、AF_NETLINK家族

    2.基于TCP套接字编程

    基于 TCP 的套接字编程的所有客户端和服务器端都是从调用socket 开始,它返回一个套接字描述符。客户端随后调用connect 函数,服务器端则调用 bind、listen 和accept 函数。

    3.套接字基本原理

    在网络中最常用的通信模式是客户机/服务器模式(Client/Server模式或C/S模式)。

    服务器方要先启动,并监听指定端口,等待客户端的请求,根据客户端的请求提供相应服务。

    一般来说,要进行网络通信,必须要在网络的每一端都要建立一个套接字,两个套接字之间是可以建立连接的,也是可以无连接的,并通过对套接字的“读”、“写”操作实现网络通信功能。类似于文件的打开、读、写、关闭的方式。

    4.与套接字相关的系统调用:

    • socket---创建一个套接字
    • close---销毁一个套接字
    • connect--在两个套接字之间建立连接
    • bind---将一个服务器套接字绑定一个地址
    • listen---设置一个套接字为接受连接状态
    • accept---接受一个连接请求并为新建的连接创建一个新的套接字

    ==== ==当你创建一个套接字的时候,需要指明三种选项:命名空间,通信类型和协议=====

    5.服务器端程序:

    • 加载套接字库
    • 创建套接字(socket)
    • 将套接字绑定到一个本地地址端口上(bind)
    • 将套接字设为监听模式,准备接收客户请求(listen)
    • 等待客户请求到来,请求到来后,接受连接请求,返回一个新的对应此次连接的套接字(accept)
    • 用返回的套接字和客户端进行通信(send/recv)
    • 返回,等待另一客户请求
    • 关闭套接字

    6.客户端程序:

    • 加载套接字库
    • 创建套接字(socket)
    • 向服务器发出连接请求(connect)
    • 和服务器进行通信(send/recv)
    • 关闭套接字(close)

    下面来一张图形象生动一下

  • 相关阅读:
    阿里P8聊并发编程:线程中断和终止
    浅谈Java中的锁:Synchronized、重入锁、读写锁
    史上最全Java面试题!进程,线程相关部分下篇(带全部答案)
    @史上最全Java面试题!关于volatile关键字篇(带全部答案)
    @史上最全Java面试题!进程,线程相关部分上篇(带全部答案)
    一道号称“史上最难”java面试题引发的线程安全思考,掌握了吗?
    stopWatch
    mysql语句及执行计划
    Awr
    文件下载
  • 原文地址:https://www.cnblogs.com/Beyond-Ricky/p/8075919.html
Copyright © 2020-2023  润新知