python2中的简单服务器如何让recv返回0

2024-10-02 20:37:24 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我的简单套接字python服务器的完整代码。从客户端连接时返回errno 10035?我还包括了“c.setblocking(0)”,因为recv阻塞了c套接字

import socket

def Main():

    host = ""
    port = 80
    indic = 1
    data = ""
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((host, port))

    s.listen(1)
    c, addr = s.accept()
    c.setblocking(0)
    print "Connection from: " + str(addr)
    while indic:
        data = c.recv(4096)
        if not data: indic = 0
        print "From connected user: " + str(data)
    c.send("<html><head></head></html>")
    c.close()
    exit()


Main()

Tags: 代码服务器hostdatamainporthtmlsocket
1条回答
网友
1楼 · 发布于 2024-10-02 20:37:24

问题是您正在尝试绑定端口80。这是一个保留端口,不能简单地将其与应用程序绑定。(有一种方法可以做到,我只是不知道怎么做)。当我尝试运行你的代码时,我得到一个不同的错误:

error: [Errno 10013] An attempt was made to access a socket in a way forbidden 
by its access permissions

当我把它换到另一个端口(例如8080)并放入host = "localhost"时,我成功地运行了您的代码。你知道吗

===================== RESTART: C:\Python27\tests\test.py =====================
Connection from: ('127.0.0.1', 54287)

有一个伟大的Socket Programming HOWTO上提供python.org网站. 你知道吗

相关问题 更多 >