socket服务端无法传输数据

来源:5-4 ajax、json和xml

零壹科技小蔡

2023-01-31

#socket服务端
import socket
import json
import threading
server = socket.socket()
#绑定到0.0.0.0:8000端口上
server.bind((‘0.0.0.0’, 8000))
server.listen()

def handle_sock(sock, addr):
while True:
# recv方法是阻塞的
tmp_data = sock.recv(1024)
print(tmp_data.decode(“utf8”))
response_template = ‘’'HTTP/1.1 200 OK
Content-Type: application/json
Access-Control-Allow-Origin:http://localhost:63342

{}

‘’'
data = [
{
“name”:“django打造在线教育”,
“teacher”:“bobby”,
“url”:“https://coding.imooc.com/class/78.html
},
{
“name”: “python高级编程”,
“teacher”: “bobby”,
“url”: “https://coding.imooc.com/class/200.html
},
{
“name”: “scrapy分布式爬虫”,
“teacher”: “bobby”,
“url”: “https://coding.imooc.com/class/92.html
},
{
“name”: “django rest framework打造生鲜电商”,
“teacher”: “bobby”,
“url”: “https://coding.imooc.com/class/131.html
},
{
“name”: “tornado从入门到精通”,
“teacher”: “bobby”,
“url”: “https://coding.imooc.com/class/290.html
},
]
sock.send(response_template.format(json.dumps(data)).encode(“utf8”))
sock.close()
break

#获取客户端连接并启动线程去处理
while True:
# 阻塞等待连接
sock, addr = server.accept()

#启动一个线程去处理新的用户连接
client_thread = threading.Thread(target=handle_sock, args=(sock, addr))
client_thread.start()

图片描述

写回答

1回答

bobby

2023-02-01

#socket服务端
import socket
import json
import threading
server = socket.socket()
#绑定到0.0.0.0:8000端口上
server.bind(('0.0.0.0', 8003))
server.listen()

def handle_sock(sock, addr):
    while True:
        # recv方法是阻塞的
        tmp_data = sock.recv(1024)
        print(tmp_data.decode("utf8"))
        response_template = '''HTTP/1.1 200 OK
Content-Type: application/json
Access-Control-Allow-Origin:http://localhost:63342

{}

'''
        data = [
            {
                "name":"django打造在线教育",
                "teacher":"bobby",
                "url":"https://coding.imooc.com/class/78.html"
            },
            {
                "name": "python高级编程",
                "teacher": "bobby",
                "url": "https://coding.imooc.com/class/200.html"
            },
            {
                "name": "scrapy分布式爬虫",
                "teacher": "bobby",
                "url": "https://coding.imooc.com/class/92.html"
            },
            {
                "name": "django rest framework打造生鲜电商",
                "teacher": "bobby",
                "url": "https://coding.imooc.com/class/131.html"
            },
            {
                "name": "tornado从入门到精通",
                "teacher": "bobby",
                "url": "https://coding.imooc.com/class/290.html"
            },
        ]
        sock.send(response_template.format(json.dumps(data)).encode("utf8"))
        sock.close()
        break

#获取客户端连接并启动线程去处理
while True:
    # 阻塞等待连接
    sock, addr = server.accept()

    #启动一个线程去处理新的用户连接
    client_thread = threading.Thread(target=handle_sock, args=(sock, addr))
    client_thread.start()

这段代码我刚才本地测试过 浏览器访问没问题,我这里端口号改为8003防止和其他端口冲突

0
0

Python爬虫工程师实战 大数据时代必备

慕课网严选精品教程,高质量内容+服务!

2377 学习 · 1158 问题

查看课程