美文网首页
本地自建服务端、客户端请求

本地自建服务端、客户端请求

作者: 呆呆笨 | 来源:发表于2020-11-23 17:22 被阅读0次

    自学完python3基础知识后,尝试的第一个demo:(直接上代码,复制可直接用)

    服务端:

    # 文件名:server.py
    
    # 导入 socket、sys 模块
    import socket
    import sys
    
    # 获取本地ip
    def get_host_ip():
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            # 114.114.114.114:是国内移动、电信和bai联du通通用的DNS。
            # 8.8.8.8:是GOOGLE公司提供的DNS,该地址是全球通用的。
            s.connect(('114.114.114.114', 80))
            ip = s.getsockname()[0]
        finally:
            s.close()
        return ip
        
    # 创建 socket 对象
    #获取tcp/ip套接字
    tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    #获取udp/ip套接字
    #udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 获取ip(也可直接写127.0.0.1)
    host = get_host_ip()
    
    port = 9999
    
    # 绑定端口号
    tcpSock.bind((host, port))
    
    # 设置最大连接数,超过后排队
    tcpSock.listen(5)
    
    print('开始监听')
    while True:# 不断监听
        print('等待接收')
        
        # 建立客户端连接
        clientsocket,addr = tcpSock.accept()
        
        # 打印客户端地址
        print("连接地址: %s" % str(addr))
        
        # 接收客户端消息(小于 1024 字节)
        client_msg = clientsocket.recv(1024)
        print('client msg: %s' %client_msg.decode())
        
        # 相应客户端信息(发送信息给客户端)
        msg = '欢迎访问!'+ "\r\n"
        clientsocket.send(msg.encode('utf-8'))
        
        # 关闭客户端套接字
        clientsocket.close()
        
    #关闭服务器套接字(可选)
    tcpSock.close()
    

    客户端:

    # 文件名:client.py
    
    # 导入 socket、sys 模块
    import socket
    import sys
    
    # 获取本地ip
    def get_host_ip():
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            # 114.114.114.114:是国内移动、电信和bai联du通通用的DNS。
            # 8.8.8.8:是GOOGLE公司提供的DNS,该地址是全球通用的。
            s.connect(('114.114.114.114', 80))
            ip = s.getsockname()[0]
        finally:
            s.close()
        return ip
        
        
    # 创建 socket 对象
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 获取ip(也可直接写127.0.0.1)
    host = get_host_ip()
    
    # 设置端口号
    port = 9999
    
    # 连接服务,指定主机和端口
    s.connect((host, port))
    
    # 给服务端发送消息
    s.send('我来逛逛!'.encode('utf-8'))
    
    # 接收服务端相应的数据(小于 1024 字节)
    msg = s.recv(1024)
    
    # 关闭客户端套接字
    s.close()
    
    print (msg.decode('utf-8'))
    

    使用:

    我是在MAC上测试,创建两个终端窗口,先运行服务端的代码

    python3 /Users/xxx/server.py
    

    再在另一个窗口运行客户端代码

    python3 /Users/xxx/client.py
    

    注:不知道路径的直接拉文件就行

    补充:

    在获取本地ip时,网上很多都是教如下方式获取,但是我获取不到(别人能获取到),查资料是说计算机名称取得有问题(迷茫),所以改用demo中的方法获取ip

    import socket
    获取本计算机的名称
    hostname = socket.gethostname()
    获取本计算机IP
    ip = socket.gethostbyname(hostname)
    

    相关文章

      网友评论

          本文标题:本地自建服务端、客户端请求

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