zoukankan      html  css  js  c++  java
  • 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)

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

  • 相关阅读:
    软考自查:面向对象设计
    软考自查:UML建模
    软考自查:数据库设计
    软考自查:数据流图(DFD)
    软考自查:多媒体基础知识
    .user.ini后门/上传黑名单绕过
    域渗透:钓鱼欺骗配合SMB重放攻击
    实现:ipc管道连接到远程计划任务种马
    实现:ipc命名管道连接
    实现:注册表的增删改查
  • 原文地址:https://www.cnblogs.com/Beyond-Ricky/p/8075919.html
Copyright © 2011-2022 走看看