python - 无法建立连接,因为目标机器主动拒绝它 - 我如何检查我的服务器是否正在运行并且客户端是否能够连接
问题描述
我试图在本地主机上运行服务器和客户端,但错误不断弹出 sql 部分没关系我想将元组从客户端发送到服务器然后意识到服务器没有真正工作我如何运行服务器和客户端在同一机器一次,以及不断弹出服务器代码的问题是什么:
import socket
import psycopg2 as sq
conn= sq.connect(database="metro", user = "postgres", password = "12345678",host="localhost", port="5432")
cur = conn.cursor()
try:
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Socket creation successful")
except:
print("Socket creation Failed")
port=8050
s.bind(('localhost',port))
print("Socket is binded to", port)
s.listen(10)
print("Socket is listening")
while True:
c, addr = s.accept()
print("got connection from", addr)
var=c.recv(2056).decode() #Ticket data from CLIENT
cur.execute("SELECT * from ticket") #Read DATABASE
rows = cur.fetchall()
flag=0
for row in rows: #Check DATABASE FOR VERIFICATION
if row==var:
flag=1
if flag==1:
data= 'Gate opened'.encode()
else:
data= 'Ticket Not Found'.encode()
c.send(data)
c.shutdown(SHUT_WR)
s.shutdown(SHUT_WR)
客户代码:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #define obj
port = 8050 #port no.
s.connect(('192.168.0.120', port)) #connect to server
data=('1','101','123')
for dat in data:
print(dat)
s.send(dat.encode())
vari = s.recv(2056)
print(vari.decode())
s.close()
Traceback(最近一次调用最后一次):文件“C:\Users\welcome\Desktop\Python\Metro\Client.py”,第 5 行,在 s.connect(('192.168.0.120', port)) #connect to server ConnectionRefusedError: [WinError 10061] 无法建立连接,因为目标机器主动拒绝它[2.074s 完成]
解决方案
我注意到您的代码中有一些错误。
您可以在客户端尝试“localhost”或“127.0.0.1”与服务器连接
SHUT_WR
应该替换为您应该用块socket.SHUT_WR
包围网络操作
并且服务器和客户端中存在逻辑上未对齐的while循环。try except
我已经减轻了这些错误。你可以参考下面的代码。
我只是用虚拟数据测试了这个,而不是数据库连接。
服务器.py
import socket
import psycopg2 as sq
try:
conn= sq.connect(database="metro", user = "postgres", password = "12345678",host="localhost", port="5432")
cur = conn.cursor()
try:
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Socket creation successful")
except:
print("Socket creation Failed")
port=8050
s.bind(('localhost',port))
print("Socket is binded to", port)
s.listen(10)
print("Socket is listening")
while True:
c, addr = s.accept()
print("got connection from", addr)
var=c.recv(2056).decode() #Ticket data from CLIENT
while var:
cur.execute("SELECT * from ticket") #Read DATABASE
rows = cur.fetchall()
flag=0
for row in rows: #Check DATABASE FOR VERIFICATION
if row==var:
flag=1
if flag==1:
data= 'Gate opened'.encode()
else:
data= 'Ticket Not Found'.encode()
c.send(data)
var=c.recv(2056).decode()
c.close()
except Exception as e:
print(e)
finally:
s.close()
客户端.py
import socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #define obj
port = 8050 #port no.
s.connect(('127.0.0.1', port)) #connect to server
data=('1','101','123')
for dat in data:
print(dat)
s.send(dat.encode())
vari = s.recv(2056)
print(vari.decode())
except Exception as e:
print(e)
finally:
s.close()
推荐阅读
- python - Powershell下运行pip和virtualenv(记事本窗口)
- ios - 如何在 swift 中使用 PageController 创建自定义的水平 UICollectionView
- android - 我们可以在我们的基础应用程序代码中访问按需动态模块的类/功能吗?
- vue.js - 如何在 VueJS 中为 Chromium 扩展定制和自动化构建应用程序
- python - 如何在`os.path.join`中保存`to csv`并服务到另一条路线以在flask python中下载回来
- flutter - 在 Flutter/Dart 中:在 AppBar 中显示两行文本?
- drake - 在 Drake 中对力/扭矩传感器建模的问题
- reactjs - 具有更具体的 HTMLElement ref 的 Typescript/React ForwardRefExoticComponent 分配失败
- python - Python:将 tiff 转换为 numpy 数组仅给出 0 和 255 的值
- android - TalkBack 开启时 SeekBar 和 Slider 的步骤错误