2016-01-12 72 views
1

我知道关于套接字还有一些其他问题,但没有真正为我工作。我是新手,我使用Python 3.4。套接字错误是什么意思,我该如何解决它们?

对于我的服务器上,这是我的代码:

import socket 
s = socket.socket() 
host = socket.gethostname() 
port = 80 
s.bind(host, port)) 
s.listen(5) 
while True: 
    c, addr = s.accept() 
    print("Got connection from", addr) 
    c.send("Thank you for connecting") 
    c.close() 

我的客户端代码:

import socket 

s = socket.socket() 
host = socket.gethostname 
port = 80 

s.connect((host, port)) 
print (s.recv(1024)) 
s.close 

对于服务器的代码,我得到了一个错误说:

Traceback (most recent call last): 
    File "/Users/Gautam/Documents/server.py", line 6, in <module> 
    s.bind((host, port)) 
PermissionError: [Errno 13] Permission denied 

对于客户我有一个错误说:

Traceback (most recent call last): 
    File "/Users/Gautam/Documents/client.py", line 7, in <module> 
    s.connect((host, port)) 
ConnectionRefusedError: [Errno 61] Connection refused 
+0

尝试以管理员身份运行它 – Totodile

回答

2

低于1024的端口号是为系统保留的,您需要具有将套接字绑定到这些端口的特殊权限。您需要使用另一个端口号,1024以上

第二个错误应该很简单弄清楚,作为错误信息明确地说

连接被拒绝

由于服务器韩元不会运行,您如何期望客户端连接到它?


相关提示,不要使用“众所周知”的端口号为自己的服务器,除非你实际上是打算做什么端口“知名”的。例如,端口80通常由网络服务器使用,因此除非您计划制作网络服务器,否则不应使用该端口。

即使1024以上的端口有时也被称为“众所周知”的端口。首先检查/etc/services以查看您选择的端口是否可用。请注意,某些服务非常模糊而且用处不大,但仍应避免使用根据/etc/services已被“保留”的端口号。

+0

我打算制作一个Web服务器,但究竟应该更改哪些内容以使服务器正常工作? – Gautam0831

+0

@ Gautam0831如果您想使用低于1024的端口号,您需要使用增加的权限运行,例如Windows中的“以管理员身份运行”。 –

+0

如何在mac中增加权限运行?我需要制作一个网络服务器,所以我想使用80端口 – Gautam0831

相关问题