Python 错误-全局名称';SOL_套接字未定义

Python 错误-全局名称';SOL_套接字未定义,python,sockets,Python,Sockets,我正在尝试创建一个基本的即时消息程序,它使用p2p(对等)连接,因此不需要服务器。我很确定没有什么问题,但每次运行我创建的客户端程序时,都会出现以下错误: s、 setsockopt(SOL_插座,SO_REUSEADDR,1) NameError:未定义全局名称“SOL_SOCKET” 节目如下: import socket def Receiver(): # Create socket that supports IPv4, TCP Protocol s = socket

我正在尝试创建一个基本的即时消息程序,它使用p2p(对等)连接,因此不需要服务器。我很确定没有什么问题,但每次运行我创建的客户端程序时,都会出现以下错误: s、 setsockopt(SOL_插座,SO_REUSEADDR,1) NameError:未定义全局名称“SOL_SOCKET” 节目如下:

import socket

def Receiver():

    # Create socket that supports IPv4, TCP Protocol
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print "Socket created."
    # Requests for IP of host (DNS)
    dns = "localhost"
    HOST = ''
    PORT = 25395
    try:

        s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
    except socket.error as serror:
        print "socket error"
    s.bind((HOST, PORT)) # Listens on all interfaces...
    print 'Listening on port 25565'
    s.listen(True) # Listen on the newly created socket... 
    conn, addr = s.accept()
    print 'Connected in port 25565'
    data = conn.recv(1024)
    print data
    s.close()
def Sender():

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    dns = "localhost"
    HOST = socket.gethostbyname(dns)
    port = 25565    
    # Connect to server
    s.connect((host,port))

    print "Socket connected to " + dns + " on IP " + host

    # Assign message to be sent to server to a variable
    message = raw_input("Message to be sent to server: ")

    #Send the actual message to server
    s.sendall(message)
    print "Message sent successfully"
    s.close()


input = raw_input('S is send, R is receive: ')
if input == 's':
    Sender()
if input == 'r':
    Receiver()
我已尝试删除s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1),但它告诉我,如果没有两个套接字使用同一端口,则无法在同一端口上使用两个套接字。

在您的代码中:

 s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
你喜欢:

 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  #            ^^^^ added         ^^^
由于您只导入了
套接字
,请检查以下代码段:

>>> import socket
>>> SOL_SOCKET
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'SOL_SOCKET' is not defined
>>> socket.SOL_SOCKET
1
导入套接字 >>>索洛插座 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 NameError:未定义名称“SOL_SOCKET” >>>socket.SOL_插座 1.
现在它给了我一个错误:[Errno 10013]有人试图以访问权限所禁止的方式访问套接字。别担心,我已经修复了它。@spider93286您是如何修复它的?我想知道。