Python 2中的简单服务器如何使RECV返回0



这是我简单套接字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()

问题是您正在尝试绑定端口80。这是一个保留端口,您不能简单地将其与应用程序绑定。(有一种方法,我只是不确定Howto(。当我尝试运行您的代码时,我会遇到不同的错误:

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

当我将其更改为其他端口(例如,8080(并将host = "localhost"我成功运行。

===================== RESTART: C:Python27teststest.py =====================
Connection from: ('127.0.0.1', 54287)

python.org上有一个很棒的插座编程howto。

最新更新