zoukankan      html  css  js  c++  java
  • scoket(网络编程)

      1.c/s架构的软件是基于网络进行通信的
    2.网络的核心即一堆协议,协议即标准,你想开发一款基于网络的通信的软件,就必须遵循这些标准

    3.什么是socket
    socket是应用层与tcp/ip协议通信的中间软件,它就是一组接口。
    它把复杂的TCP/IP协议族隐藏在socket接口后面,对于用户来说,一组简单的接口就是全部
    我们只需要遵循socket的规定去编程,写出的程序子让就是遵循TCP/UDP标准的

    socket=ip+port
    ip是用来标识互联网中的一台主机的位置
    port是用来标识这台机器上的一个应用程序
    ip地址是配置到网卡,port是应用程序开启的
    ip加por的t绑定标识互联网中独一无二的一个应用程序
    pid标识一台机器上不同进程



    4.套接字
    套接字:一台主机上的多个应用程序之间的通讯。
    套接字分为两种:
    1.基于文件类型的套接字 AF_UNIX
    unix一切皆文件,基于文件的套接字调用的就是底层的文件系统来取数据,
    两个套接字进程运行在同一机器,可以通过访问同一个文件系统间接完成通信
    2.基于网络类型的套接字 AF_INET

    socket启动流程套路:
    服务器先初始化socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接
    客户端初始化一个socket,然后连接服务器(connect),如果连接成功,这时客户端有服务器端的连接就建立了。
    客户端发送数据请求,服务器端接受请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束


    服务端套接字函数
    s.bind() 绑定(主机,端口)到套接字
    s.listen() 开始TCP监听
    s.accept()被动接受tcp客户端的连接,(阻塞式)等待连接的到来

    服务端套接字函数
    s.connect () 主动初始化tcp服务器连接
    s.connect_ex() connect()函数的扩展版本,出错时返回错误代码,而不是抛出异常

    公共用途的套接字函数
    s.recv() 接受数据
    s.send() 发送tcp数据
    s.sendall() 发送完整的tcp数据
    s.recvfrom 接受UDP数据
    s.sento() 发送UDP数据
    s.getpeername() 连接到当前套接字的远端的地址
    s.getsockname() 当前套接字的地址
    s.getsockopt() 返回指定套接字的参数
    s.setsockopt() 设置指定套接字的参数
    s.close() 关闭套接字

  • 相关阅读:
    解决Mac笔记本电脑自带录屏软件没有声音问题
    pip安装包后Import的时候提示找不到的解决方案
    Photoshop怎么给图片添加简介信息或者版权信息
    [2021/08/06]Ubuntu20 安装指定小版本Mysql(本文示例mysql8.0.18)
    Springboot2.3.5 实现JWT授权验证并针对不同用户实现多个拦截器
    搭建集群步骤注意事项
    docker服务程序网络排查
    网络分层协议集合分析
    括号串
    抢救实验数据
  • 原文地址:https://www.cnblogs.com/Marcki/p/10111936.html
Copyright © 2011-2022 走看看