gpt4 book ai didi

python - 我有一个客户端代码和一个 python 中的服务器代码。服务器启动但客户端找不到

转载 作者:行者123 更新时间:2023-12-03 11:50:23 24 4
gpt4 key购买 nike

import socket
from _thread import *
import sys

server = "10.1.209.68"
port = 5555

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
s.bind((server, port))
except socket.error as e:
str(e)

s.listen(2)
print("Waiting for a connection, Server Started")

def read_pos(str):
str = str.split(",")
return int(str[0]), int(str[1])


def make_pos(tup):
return str(tup[0]) + "," + str(tup[1])

pos = [(0,0),(100,100)]

def threaded_client(conn, player):
conn.send(str.encode(make_pos(pos[player])))
reply = ""
while True:
try:
data = read_pos(conn.recv(2048).decode())
pos[player] = data

if not data:
print("Disconnected")
break
else:
if player == 1:
reply = pos[0]
else:
reply = pos[1]

print("Received: ", data)
print("Sending : ", reply)

conn.sendall(str.encode(make_pos(reply)))
except:
break

print("Lost connection")
conn.close()

currentPlayer = 0
while True:
conn, addr = s.accept()
print("Connected to:", addr)

start_new_thread(threaded_client, (conn, currentPlayer))
currentPlayer += 1

这是我的服务器代码,运行时弹出“等待连接,服务器已启动”

但是当我运行我的客户端代码(如下)时,它没有找到它,并且客户端无法初始化。

import pygame
from network import Network

width = 500
height = 500
win = pygame.display.set_mode((width, height))
pygame.display.set_caption("Client")

clientNumber = 0


class Player():
def __init__(self, x, y, width, height, color):
self.x = x
self.y = y
self.width = width
self.height = height
self.color = color
self.rect = (x,y,width,height)
self.vel = 3

def draw(self, win):
pygame.draw.rect(win, self.color, self.rect)

def move(self):
keys = pygame.key.get_pressed()

if keys[pygame.K_LEFT]:
self.x -= self.vel

if keys[pygame.K_RIGHT]:
self.x += self.vel

if keys[pygame.K_UP]:
self.y -= self.vel

if keys[pygame.K_DOWN]:
self.y += self.vel

self.update()

def update(self):
self.rect = (self.x, self.y, self.width, self.height)


def read_pos(str):
if read_pos(str) is not None:
str = str.split(",")
return int(str[0]), int(str[1])


def make_pos(tup):
return str(tup[0]) + "," + str(tup[1])


def redrawWindow(win,player, player2):
win.fill((255,255,255))
player.draw(win)
player2.draw(win)
pygame.display.update()


def main():
run = True
n = Network()
startPos = read_pos(n.getPos())
p = Player(startPos[0],startPos[1],100,100,(0,255,0))
p2 = Player(0,0,100,100,(255,0,0))
clock = pygame.time.Clock()

while run:
clock.tick(60)
p2Pos = read_pos(n.send(make_pos((p.x, p.y))))
p2.x = p2Pos[0]
p2.y = p2Pos[1]
p2.update()

for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
pygame.quit()

p.move()
redrawWindow(win, p, p2)

main()

这里是客户端代码中引用的网络文件

import socket


class Network:
def __init__(self):
self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server = "10.1.209.68"
self.port = 5555
self.addr = (self.server, self.port)
self.pos = self.connect()

def getPos(self):
return self.pos

def connect(self):
try:
self.client.connect(self.addr)
return self.client.recv(2048).decode()
except:
pass

def send(self, data):
try:
self.client.send(str.encode(data))
return self.client.recv(2048).decode()
except socket.error as e:
print(e)

当既不运行 print e 时,它​​们似乎就没有找到对方。我没有直接错误,所以我不太确定我需要做什么才能解决这个问题。关于为什么会发生这种情况的任何提示都会很棒!

最佳答案

我看不出任何错误,也许是check your port以确保它是开放的。其次,windows 防火墙总是妨碍这样的事情,所以一定要 turn that completely off (用于测试)并在之后创建异常。

如果一切都失败了,那么在本地主机上进行测试有时可以创建一个临时解决方案,祝你好运。

关于python - 我有一个客户端代码和一个 python 中的服务器代码。服务器启动但客户端找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64249107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com