美文网首页Python小哥哥
Python是如何实现通讯功能的?

Python是如何实现通讯功能的?

作者: 我爱学python | 来源:发表于2019-03-15 15:39 被阅读0次

    socket又称套接字,应用程序可以通过它发出或接收网络请求,实现通讯功能。

    创建socket

    socket.socket([family[, type[, protocal]]])

    1、family 可以是 AF_UNIX 或 AF_INET(默认是这个)。

    2、type 可以是 SOCK_STREAM(默认是这个) 或 SOCK_DGRAM。

    3、protocol 一般不填,默认值为 0。

    4、所以创建socket也可以用socket.socket(),不加任何参数。

    下面代码的部分屏幕是可以左右滑动的。

    我们需要创建两个.py文件

    server.py

    import socket
    # 创建socket对象,相当于买手机
    # python学习群683380553
    serversocket = socket.socket()
    # 获取本地主机名
    host = socket.gethostname()
    # 设定端口号,理论上1024-65535都可以
    port = 1234
    # 绑定地址和端口,相当于给手机插上电话卡
    serversocket.bind((host, port))
    # 设置最大连接数,超过后排队,待机状态
    serversocket.listen(5)
    # 设置循环,可以不停地接电话
    while True:
        # 建立客户端连接,接电话    
        clientsocket, addr = serversocket.accept()    
        print("连接地址: %s" % str(addr))    
        # 发消息    
        msg = '连接到服务器了。'    
        clientsocket.send(msg.encode('utf-8'))    
        # 接收信息,数据不能大于1024个字节    
        str_1 = clientsocket.recv(1024).decode()    
        print(str_1)    
        # 挂断电话    
        clientsocket.close()
    

    client.py

    # 导入 socket模块
    import socket
    # 创建 socket 对象
    s = socket.socket()
    # 获取本地主机名
    host = socket.gethostname()
    # 设置端口号,理论上1024-65535都可以
    port = 1234
    # 连接服务,指定主机和端口
    s.connect((host, port))
    # 接收小于 1024 字节的数据
    msg = s.recv(1024)print(msg.decode('utf-8'))
    # 发送信息
    s.send('连接到一个客户端。'.encode('utf-8'))
    # 关闭连接
    s.close()
    

    以上。不明白的地方,大家要多看注释。

    一个比较好理解socket的方法:将socket说成ip+port,ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序,ip与port的绑定就标识了互联网中独一无二的一个应用程序。

    相关文章

      网友评论

        本文标题:Python是如何实现通讯功能的?

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