gpt4 book ai didi

python - Python:重新连接客户端套接字

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

如何与客户端套接字重新连接到同一服务器套接字? SO上也有类似的问题(仍然是无法接受的答案)。

我的服务器端看起来像这样

import socket
TCP_IP = '192.168.0.12'
TCP_PORT = 28478
BUFF_SZE = 1024
my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
my_socket.settimeout(10)
my_socket.bind((TCP_IP, TCP_PORT))
my_socket.listen(1)
con, addr = my_socket.accept()
while 1:
data = con.recv(BUFF_SZE)
if data:
print(data.decode())
con.send(("world").encode()
con.close()

我的客户端看起来像这样
import socket

TCP_IP = "192.168.0.12"
TCP_PORT = 28478
BUFF_SZE = 1024

sckt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sckt.connect((TCP_IP, TCP_PORT))

MSG = "Hello"
sckt.send(MSG.encode())
data = sckt.recv(BUFF_SZE)
print(data.decode())

MSG = "Again"
sckt.send(MSG.encode())
data = sckt.recv(BUFF_SZE)
print(data.decode())


sckt.close()

现在,客户端成功地向服务器进行了两次传输并获得了响应。但是,我不能两次运行客户端脚本...服务器似乎没有得到任何输入,因此客户端没有得到响应。
我以为这是有可能的,因为我在脚本末尾关闭了客户端的套接字,因此服务器端一定正在发生(或未发生)。
我应该在while循环中在服务器内部执行 my_socket.accept()吗?

最佳答案

@Barmar发表评论后将服务器端更改为以下内容

import socket
TCP_IP = '192.168.0.12'
TCP_PORT = 28478
BUFF_SZE = 1024
my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
my_socket.settimeout(10)
my_socket.bind((TCP_IP, TCP_PORT))
my_socket.listen(1)
con, addr = my_socket.accept()
while 1:
data = con.recv(BUFF_SZE)
if data:
print(data.decode())
con.send(("world").encode()
if not data:
con, addr = my_socket.accept()

con.close()

因此,只要客户端杀死套接字,服务器就会接受新的连接。

关于python - Python:重新连接客户端套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46532758/

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