zoukankan      html  css  js  c++  java
  • socket tcp

    ■  TCP 代码结构

    参考:

     https://blog.csdn.net/qq_33951180/article/details/68066634

    ■ socket-client

        • 创建socket

              socket-client.c -> pa_socket_client_new_unix() ->  socket(PF_LOCAL, SOCK_STREAM, 0)

        • connect

              socket-client.c -> do_connect() -> connect(c->fd, sa, len)

         • read/write

              socket-client.c ->do_call() -> io = pa_iochannel_new(c->mainloop, c->fd, c->fd) 

              iochannel.c -> pa_iochannel_new() -> m->source_io(m, ifd, PA_MAINLOOP_API_IO_EVENT_BOTH, callback, io) -> io->callback(io, io->userdata)

              pstream.c -> pa_pstream_new() -> pa_iochannel_set_callback(io, io_callback, p) -> io_callback() -> do_something() -> do_write()-> pa_iochannel_write() -> write()

                                                                                                                                                                                                        -> do_read()-> pa_iochannel_read() -> read() 

      ■ socket-server

        • 创建socket

           socket-server.c ->pa_socket_server_new_unix() -> socket()

        • 绑定socket

           socket-server.c ->pa_socket_server_new_unix() -> bind() 

        • listen socket

            socket-server.c ->pa_socket_server_new_unix() -> listen() 

        • accept socket

            socket-server.c ->callback() -> accept() 

        • read/write

            socket-server.c ->callback() ->pa_iochannel_new(s->mainloop, nfd, nfd)

            module-protocol-stub.c -> protocol_new ()

              #define protocol_new pa_protocol_native_new

            protocol-native.c-> pa_socket_server_set_callback(p->server, on_connection, p) -> pa_pstream_new(p->core->mainloop, io)-> io_callback() -> do_something() -> do_write()-> pa_iochannel_write() -> write()

                                                                                                                                                                                                                                                                          -> do_read()-> pa_iochannel_read() -> read() 

  • 相关阅读:
    iOS证书的使用
    ios设备管理
    矩阵的相关问题(旋转矩阵&螺旋矩阵)
    flex实现多列布局效果&对角线布局
    peerdependencies
    数组和对象遍历方法对比
    async和defer
    Promise.all并发限制
    electron+react开发属于自己的桌面应用
    webpack代码切割
  • 原文地址:https://www.cnblogs.com/renhl/p/14018779.html
Copyright © 2011-2022 走看看