zoukankan      html  css  js  c++  java
  • python 之socket

    socket,它最初做为BSD UNIX的进程通信机制,通常被称做"套接字",如今已经成为windows和mac等其它操作系统所共同遵守的网络编程标准。

    socket使用ip+端口+协议的三组组合,来标识一个通信链路。

    一、socket 的TCP

    Server端代码:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import socket
    import datetime
    
    HOST = '0.0.0.0'
    PORT = 3434
    
    # AF_INET ipv4, SOCK_STREAM tcp
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 第一步:建立sockeet
    s.bind((HOST, PORT))  # 第二步:绑定 服务器及端口
    s.listen(5)  # 第三步:监听(允许5个并发accept)
    
    while True:
        conn, addr = s.accept()  # 第四步:等待接收客户端连接
        print 'Client %s connected!' % str(addr)  # 输出客户端的连接
        dt = datetime.datetime.now()
        msg = "Current time is " + str(dt)
        conn.send(msg)  # 第五步:接收或发送数据(自动给连接的客户端发送数据)
        print "Send:", msg
        conn.close()  # 第六步:关闭连接

    Client端代码:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import socket
    
    HOST = 'xx.xx.xx.244'  # server端ip
    PORT = 3434
    
    # # AF_INET ipv4, SOCK_STREAM tcp
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 第一步:建立socket
    s.connect((HOST, PORT))  # 第二步:连接服务器
    print "Connect %s:%s"%(HOST, PORT)
    data = s.recv(1024)  # 第三步:收发数据(从服务器接收数据)
    print "Received:", data
    s.close()  # 第四步:关闭连接

    执行结果:

    二、socket UDP
    UDP相对于TCP没有建立连接、监听、断开连接等概念,UDP有独属于自己的语法 :
    recvfrom():从绑定的地址接收数据
    sendto():向指定的地址发送数据

    Server端:
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import socket
    
    HOST = '0.0.0.0'
    PORT = 3434
    
    # AF_INET ipv4, SOCK_DGRAM udp
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # 第一步:建立socket对象
    s.bind((HOST, PORT))  # 第二步:绑定 服务器及端口
    
    while True:
        data, addr = s.recvfrom(1024)  # 第三步:接收客户端发送来的消息
        print "Recevied: %s from %s"%(data, str(addr))
    
    s.close()  # 第四步:关闭连接

    Client端:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import socket
    
    HOST = '47.94.57.244'
    PORT = 3434
    
    # AF_INET ipv4, SOCK_DGRAM udp
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # 第一步:建立socket
    data = "UDP DATA from client.."
    s.sendto(data, (HOST, PORT))  # 第二步:给服务端发送数据
    print "Send:%s to %s:%s"%(data, HOST, str(PORT))
    s.close()  # 第三步:关闭连接

     其它参考:

    https://www.cnblogs.com/aylin/p/5572104.html



  • 相关阅读:
    问题 F: A+B和C (15)
    问题 E: Shortest Distance (20)
    完数
    分解质因数
    念整数
    问题 B: 习题7-7 复制字符串中的元音字母
    问题 A: 习题7-5 字符串逆序存放
    问题 D: 习题6-12 解密
    计算机的重点编码方式
    PyCharm更换第三方包源
  • 原文地址:https://www.cnblogs.com/kongzhagen/p/8258647.html
Copyright © 2011-2022 走看看