OSError: getsockaddrarg: bad family

来源:5-2 案例—HTTP协议实现返回文本信息的Web服务器

神经菜哈

2020-03-04 13:07:50

运行程序后提示错误信息

写回答

1回答

好帮手乔木

2020-03-04

同学你好:

同学提供的信息无法确定具体的错误,建议同学可以提供执行的错误截图。

或者可以检查自己的代码:

import socket
import multiprocessing


def handle_client(client):
    #接收客户端的数据
    client_request_data = client.recv(1024)
    print("客户端的请求数据为:%s"%client_request_data)
    #向客户端响应数据,是根据HTTP协议的规范的
    #状态行:包含 HTTP 协议版本、状态码和状态描述,以空格分隔
    response_start_line = "HTTP/1.1 200 OK\r\n"
    #自定义了一个响应头
    response_headers = "Server:My server\r\n"
    response_body = "Hello World"
    #响应正文:返回内容,注意和响应头之间有一个空行
    response = response_start_line+response_headers+"\r\n"+response_body
    print("服务器响应的数据为:%s"%(response))
    #一定要回复二进制数据
    client.send(response.encode("utf-8"))
    client.close()


if __name__ == '__main__':
    #创建一个TCP类型的HTTP服务器
    server = socket.socket(type=socket.SOCK_STREAM)
    #如果地址里面什么都不写,代表绑定的是我当前机器的所有IP地址,ip地址和端口号是一个元祖
    server.bind(("",8080))
    #服务端监听
    server.listen(128)
    print("WEB服务器已经启动....")
    #不停的接收客户端的请求
    while True:
        #接收客户端的请求,并且返回两个信息,分比为客户端的socket和客户端的地址信息
        client,address = server.accept()
        print("%s,%s连接上了WEB服务器"%(address[0],address[1]))
        #引入多进程,处理多个客户端的请求
        client_process = multiprocessing.Process(target=handle_client,args=(client,))
        #开启进程
        client_process.start()

如果我解决了同学的问题,请采纳!学习愉快^_^。

0

0 学习 · 1672 问题

查看课程