zoukankan      html  css  js  c++  java
  • UDP and netstat

    Do some experiment about UDP by Python3 and netstat.

    Code

    # coding: utf-8
    
    import socket
    
    from IPython import embed
    
    
    def main():
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        embed()
        sock.close()
    
    
    if __name__ == '__main__':
        main()
    
    

    A and B start

    A:

    $ python3 client.py
    Python 3.5.2 (default, Oct  8 2019, 13:06:37)
    Type "copyright", "credits" or "license" for more information.
    
    IPython 2.4.1 -- An enhanced Interactive Python.
    ?         -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help      -> Python's own help system.
    object?   -> Details about 'object', use 'object??' for extra details.
    
    In [1]:
    

    B:

    $ python3 client.py
    Python 3.5.2 (default, Oct  8 2019, 13:06:37)
    Type "copyright", "credits" or "license" for more information.
    
    IPython 2.4.1 -- An enhanced Interactive Python.
    ?         -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help      -> Python's own help system.
    object?   -> Details about 'object', use 'object??' for extra details.
    
    In [1]:
    
    $ netstat -au
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    

    A bind

    A:

    In [1]: sock.bind(('localhost', 10001))
    
    $ netstat -au
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    udp        0      0 localhost:10001         *:*
    

    B send to A

    B:

    In [1]: sock.sendto(b'hello world', ('localhost', 10001))
    Out[1]: 11
    

    A:

    In [2]: sock.recvfrom(1024)
    Out[2]: (b'hello world', ('127.0.0.1', 42616))
    
    $ netstat -au
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    udp      768      0 localhost:10001         *:*
    udp        0      0 *:42616                 *:*
    

    A send to B

    A:

    In [3]: sock.sendto(b'This is a response.', ('127.0.0.1', 42616))
    Out[3]: 19
    

    B:

    In [2]: sock.recvfrom(1024)
    Out[2]: (b'This is a response.', ('127.0.0.1', 10001))
    
    $ netstat -au
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    udp        0      0 localhost:10001         *:*
    udp        0      0 *:42616                 *:*
    

    B connect to A

    B:

    In [4]: sock.connect(('127.0.0.1', 10001))
    
    $ netstat -au
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    udp        0      0 localhost:10001         *:*
    udp        0      0 localhost:42616         localhost:10001         ESTABLISHED
    

    A:

    In [4]: sock.sendto(b'This is another response.', ('127.0.0.1', 42616))
    Out[4]: 25
    

    B:

    In [5]: sock.recvfrom(1024)
    Out[5]: (b'This is another response.', ('127.0.0.1', 10001))
    

    C:

    In [1]: sock.bind(('127.0.0.1', 10010))
    
    In [2]: sock.sendto(b'This is a response from C.', ('127.0.0.1', 42616))
    Out[2]: 26
    

    B:

    In [7]: sock.recvfrom(1024)
    blocked
    

    After B connected to A, B will not receive packets from any endpoint other than A.

  • 相关阅读:
    Poj 2406--Power Strings(KMP)
    杭电2682--Tree(Prim)
    杭电1827--Summer Holiday(SCC + 缩点)
    杭电2181--哈密顿绕行世界问题(Dfs)
    杭电1269--迷宫城堡(强连通分量)
    南阳21--三个水杯(Bfs)
    杭电1203--I NEED A OFFER!(01背包)
    e.send和next(e)的区别
    python中yield与return的用法与区别
    迭代器
  • 原文地址:https://www.cnblogs.com/ToRapture/p/12793410.html
Copyright © 2011-2022 走看看