美文网首页
python实现socket协议C/S,进行通信

python实现socket协议C/S,进行通信

作者: 卓昂芭比 | 来源:发表于2020-07-13 18:08 被阅读0次

    服务端代码:

    #!/usr/bin/python 

     import time, socket 

     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('127.0.0.1', 999)) 

    s.listen(5) 

     while True: sock, addr = s.accept() 

     data = sock.recv(1024)

     print(data.decode()) 

     sock.send('Hello, %s!' % data.encode()) 

     sock.close()

     print('Connection from %s:%s closed.' % addr) 

    客户端代码:#!/usr/bin/python 

    import socket 

     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1', 999)) 

    s.send('hello'.encode()) 

    print(s.recv(1024).decode())

    函数

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)

    参数Ⅰ --- 地址簇

    AF_INETIPv4(默认)

    AF_INET6IPv6

    AF_UNIX     本地Unix系统进程间通信

    参数Ⅱ --- 类型

    SOCK_STREAM       TCP流式socket (默认)

    SOCK_DGRAM          UDP数据报式socket

    SOCK_RAW                原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以IP_HDRINCL套接字选项由用户构造IP头。

    SOCK_RDM              一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。

    SOCK_RAM                通常仅限于高级用户或管理员运行的程序使用。

    SOCK_SEQPACKET        可靠的连续数据包服务

    参数Ⅲ --- 协议

    0                 协议号通常为零,可以省略,或者在地址族为AF_CAN的情况下,协议应为CAN_RAW或CAN_BCM之一。

    serversocket服务器端的socket接口

    Socket是建立网络连接时使用的,在连接成功时,应用程序两端zhi都会产生一个Socket实例dao

    操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别

    不因为在服务器端或在客户端而产生不同的级别,不管是Socket还是ServerSocket他们的

    工作都是通过Socket类和其子类来完成的

    相关文章

      网友评论

          本文标题:python实现socket协议C/S,进行通信

          本文链接:https://www.haomeiwen.com/subject/umincktx.html