• 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() 关闭套接字

  • 相关阅读:
    3 聊天室
    freemaker分页模板
    [三]ajax重要属性
    [二]java运行原理
    [转]freemaker格式化日期
    [二]SpringMvc实践-注解
    win7下禁用ctrl alt del +上下左右键
    [一]初识SpringMVC
    Powerdesigner设置name与code不同时变化
    Ubuntu下缓冲器溢出攻击实验(可以看看问题分析)
  • 原文地址:https://www.cnblogs.com/Marcki/p/10111936.html
Copyright © 2020-2023  润新知