socket.error: [Errno 98] Address already in use
socket.error: [Errno 98] Address already in use
我有连接服务器的代码,这是服务器上的 fileServer.py,我在客户端有另一个文件 py 但还没有测试,当 运行 这段代码时我遇到了问题,请查看以下信息
import socket
import threading
import os
def RetrFile(name, sock):
filename = sock.recv(1024).decode()
if os.path.isfile(filename):
message = "EXISTS" + str(os.path.getsize(filename))
sock.send(message.encode())
userResponse = sock.recv(1024).decode()
if userResponse[:2] == "OK":
with open(filename, 'rb') as f:
bytesToSend = f.read(1024)
sock.send(bytesToSend)
while (bytesToSend !=""):
bytesToSend = f.read(1024)
sock.send(bytesToSend)
else:
sock.send("ERR")
sock.close()
def Main():
host = '192.168.0.91'
port = 8069
s = socket.socket()
s.bind((host,port))
s.listen(5)
print('Server Started')
while True:
c, addr = s.accept()
print ('Client connected ip: ' + str(addr))
t = threading.Thread(target = RetrFile, args=('retrThread',c))
t.start()
s.close()
if __name__ == '__main__':
Main()
当我运行它时,它向我显示一个错误,我认为这是关于连接IP服务器的套接字,对吗?
File "fileServer.py", line 40, in <module>
Main()
File "fileServer.py", line 26, in Main
s.bind((host,port))
File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
我该如何解决?
有什么建议吗?
提前致谢
我认为您正在尝试 运行 同一端口上的多个 Odoo 服务器。
在终端上试试这个:
sudo netstat -nlp | grep 8069
然后你会看到这样的东西:
tcp 0 0 0.0.0.0:8069 0.0.0.0:* LISTEN 10869/python2
终止进程:
sudo kill -9 10869
或
更改 fileServer.py
中的端口号。
然后尝试启动 Odoo。
希望对您有所帮助。
错误不言自明"Address already in use"
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] 地址已被使用
@KbiR 已经解释过了
windows 看看这个 How can you find out which process is listening on a port on Windows?
使用这个命令是正确的 sudo systemctl stop odoo11
如果您使用其他版本的 odoo,请将数字 11 更改为您的版本
您可以使用此命令终止该端口上已经 运行 的 Odoo 进程
fuser -k 8069/tcp
并再次启动您的 python 脚本
您可以简单地使用以下脚本来终止进程。
fuser -k 8069/tcp
一般来说,
fuser -k <port_no>/<tcp/udp>
或
netstat -nlp | grep <port_no>
kill -9 PID
我有连接服务器的代码,这是服务器上的 fileServer.py,我在客户端有另一个文件 py 但还没有测试,当 运行 这段代码时我遇到了问题,请查看以下信息
import socket
import threading
import os
def RetrFile(name, sock):
filename = sock.recv(1024).decode()
if os.path.isfile(filename):
message = "EXISTS" + str(os.path.getsize(filename))
sock.send(message.encode())
userResponse = sock.recv(1024).decode()
if userResponse[:2] == "OK":
with open(filename, 'rb') as f:
bytesToSend = f.read(1024)
sock.send(bytesToSend)
while (bytesToSend !=""):
bytesToSend = f.read(1024)
sock.send(bytesToSend)
else:
sock.send("ERR")
sock.close()
def Main():
host = '192.168.0.91'
port = 8069
s = socket.socket()
s.bind((host,port))
s.listen(5)
print('Server Started')
while True:
c, addr = s.accept()
print ('Client connected ip: ' + str(addr))
t = threading.Thread(target = RetrFile, args=('retrThread',c))
t.start()
s.close()
if __name__ == '__main__':
Main()
当我运行它时,它向我显示一个错误,我认为这是关于连接IP服务器的套接字,对吗?
File "fileServer.py", line 40, in <module>
Main()
File "fileServer.py", line 26, in Main
s.bind((host,port))
File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
我该如何解决? 有什么建议吗? 提前致谢
我认为您正在尝试 运行 同一端口上的多个 Odoo 服务器。
在终端上试试这个:
sudo netstat -nlp | grep 8069
然后你会看到这样的东西:
tcp 0 0 0.0.0.0:8069 0.0.0.0:* LISTEN 10869/python2
终止进程:
sudo kill -9 10869
或
更改 fileServer.py
中的端口号。
然后尝试启动 Odoo。
希望对您有所帮助。
错误不言自明"Address already in use" return getattr(self._sock,name)(*args) socket.error: [Errno 98] 地址已被使用
@KbiR 已经解释过了
windows 看看这个 How can you find out which process is listening on a port on Windows?
使用这个命令是正确的 sudo systemctl stop odoo11
如果您使用其他版本的 odoo,请将数字 11 更改为您的版本
您可以使用此命令终止该端口上已经 运行 的 Odoo 进程
fuser -k 8069/tcp
并再次启动您的 python 脚本
您可以简单地使用以下脚本来终止进程。
fuser -k 8069/tcp
一般来说,
fuser -k <port_no>/<tcp/udp>
或
netstat -nlp | grep <port_no>
kill -9 PID