我知道套接字还有其他一些问题,但没有什么对我有用。我是新手,我在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
对于SERVER代码,我收到错误消息:
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 :(得分:2)
低于1024的端口号是为系统保留的,您需要具有将套接字绑定到这些端口的特殊权限。您需要使用1024以上的其他端口号。
第二个错误应该很容易理解,因为错误消息明确地说
拒绝连接
由于服务器无法运行,您希望客户端如何连接到它?
在相关说明中,不要为自己的服务器使用“众所周知的”端口号,除非您实际上计划执行端口“众所周知”的操作。例如,端口80通常由Web服务器使用,因此除非您打算创建Web服务器,否则不应使用该端口。
即使1024以上的端口有时也被称为“众所周知的”端口。首先检查/etc/services
以查看您选择的端口是否可用。请注意,某些服务非常模糊且使用不多,但您仍应避免使用根据/etc/services
已经“保留”的端口号。