gpt4 book ai didi

python - 在Python上使用套接字进行通信

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

我制作了两个脚本来练习在Python中使用套接字,但是在建立连接后无法进行通信:
我的脚本如下:

Server.py

#!/usr/local/bin/python3.5

import socket, sys

HOST = 'myIP'
PORT = 50000
counter = 0

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

try:
mySocket.bind((HOST,PORT))
except socket.error:
print("Socket connection failed.")
sys.exit

while 1:
print("Server ready, waiting for request...")
mySocket.listen(2)

connexion, adress = mySocket.accept()
counter+=1
print("Client connected, adress IP %s, port %s" % (adress[0], adress[1]))

msgServeur="Connected to server PytPyt. You can send messages."
connexion.send(msgServeur.encode("Utf8"))
msgClient = connexion.recv(1024).decode("Utf8")
while 1:
print("C>", msgClient)
if msgClient.upper() == "END" or msgClient == "":
break
msgServeur = input("S> ")
connexion.send(msgServeur.encode("Utf8"))
msgClient = connexion.recv(1024).decode("Utf8")

connexion.send("end".encode("Utf8"))
print("Connexion finished.")
connexion.close()

ch=input("<R>etry <T>erminate?")
if ch.upper() =='T':
break

客户端
#!/usr/local/bin/python3.5

import socket, sys

HOST = 'myIP'
PORT = 50000

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

try:
mySocket.connect((HOST, PORT))
except socket.error:
print("Connexion failed.")
sys.exit()
print("Connexion established with server.")

msgServeur = mySocket.recv(1024).decode("Utf8")

while 1:
if msgServeur.upper == "END" or msgServeur == "":
break
print("S>", msgServeur)
msgClient=input("C> ")
mySocket.send(msgClient.encode("Utf8"))
msgServeur = mySocket.recv(1024).decode("Utf8")

print("Connexion terminated.")
mySocket.close()

当我执行两个脚本时,结果如下:

服务器 :
myPrompt : ./Server.py &
Server ready, waiting for request...
Client connected, adresse IP myIP, port 53551

客户 :
myPrompt : ./Client.py &
Connexion established with server.
S> Connected to server PytPyt. You can send messages.
C> hello
-bash: hello: command not found

[1]+ Stopped ./Client.py

看来我的消息是作为bash命令执行的,而不是要发送的消息。但是,如果我再次运行该作业,它将可以正常工作:

客户 :
myPrompt : %
./Client.py
hello

服务器 :
C> hello
S>

但此后它再次失败。每当我要发送消息时,我都必须再次运行作业。

你知道错误在哪里吗?

最佳答案

实际上问题出在脚本启动上。您使用以下命令

./Client.py &

使用 &,该过程在后台启动,因此您可以继续使用该Shell。 &从终端分离脚本的 stdin。在脚本启动后,您在终端上打印的所有内容都将被解释为bash命令。
尝试只使用
./Client.py

关于python - 在Python上使用套接字进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46993045/

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