Vbbbbbbbbbbb 2021-03-16 17:29 采纳率: 0%
浏览 19

求助! 如何使用socket连接特定TCP端口确定服务是否可达!!! 我socket传入www.ba

求助! 如何使用socket连接特定TCP端口确定服务是否可达!!! 我socket传入www.baidu.com和80返回的是400 bad request 。 啊啊啊我该做什么啊 查了很多帖子都是模拟客户端和服务器通信,要使用什么api现在还不明确,我好憨啊[face]monkey2:019.png[/face][face]monkey2:019.png[/face][face]monkey2:019.png[/face][face]monkey2:019.png[/face][face]monkey2:019.png[/face]
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-24 01:36
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Python中,你可以使用socket模块来实现这个功能。以下是一个简单的例子:

    import socket
    
    # 创建一个socket对象
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 设置为可重用(REUSEADDR)以允许绑定多个地址
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    
    # 绑定到指定的IP地址和端口号
    s.bind(('localhost', 80))
    
    # 监听连接请求
    s.listen(5)
    
    while True:
        # 等待接受一个新的连接请求
        conn, addr = s.accept()
        
        # 发送HTTP请求
        request = "GET / HTTP/1.1\r\nHost: www.baidu.com\r\nConnection: close\r\n\r\n"
        conn.sendall(request.encode('utf-8'))
        
        # 接收响应
        response = b''
        while True:
            data = conn.recv(1024)
            if not data:
                break
            response += data
        
        # 打印响应
        print(response.decode('utf-8'))
    
        # 关闭连接
        conn.close()
    
    # 关闭socket
    s.close()
    

    在这个例子中,我们首先创建了一个新的socket对象,并设置了它为可重用。然后,我们绑定了我们的IP地址和端口号。接着,我们在监听器上等待新的连接请求。

    当有连接时,我们发送一个HTTP GET请求到百度网站的根目录。然后,我们开始接收来自服务器的响应数据。一旦接收到完整的响应,我们就打印出服务器的响应内容并关闭连接。

    最后,我们关闭了所有的socket资源。

    注意:这个例子是基于一个非常基础的理解,实际应用可能需要处理更多的错误情况和异常。例如,你可能需要添加错误检查,或者在服务器不响应时采取更积极的措施。

    评论

报告相同问题?