![](/img/trans.png)
[英]Python client can not communicate with ruby server. I get [Errno 10061] No connection could be made because the target machine actively refused it
[英]No connection could be made because the target machine actively refused it— How can i check if my server is running and client is able to connect
我試圖在本地主機上運行一個服務器和一個客戶端,但一個錯誤不斷彈出 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()
回溯(最近一次調用最后一次):文件 "C:\\Users\\welcome\\Desktop\\Python\\Metro\\Client.py", line 5, in 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
你應該用try except
block 包圍網絡操作
並且在服務器和客戶端中存在邏輯錯位的 while 循環。
我已經減輕了這些錯誤。 你可以參考下面的代碼。
我只是用虛擬數據測試了這個,而不是數據庫連接。
服務器.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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.