[英]Got this error on my pyzbar program after I converted to exe with pyinstaller
[英]I got a connection error in my socket program
我试图制作一个连接服务器和客户端的程序。
这是服务器代码:
import socket
HOST="127.0.0.1"
PORT=5000
mySocket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
mySocket.bind( (HOST, PORT) )
except socket.error:
print ("Call to bind failed")
while 1:
print("Waiting for connection")
mySocket.listen(1)
connection, address=mySocket.accept()
print("Connection recieved from:", address[0])
connection.send("SERVER>>> Connection successful")
clientMessage=connection.recv(1024)
while clientMessage != "Client: end":
if not clientMessage:
break
print (clientMessage)
serverMessage=input("Server: ")
connection.send("Server: "+serverMessage)
clientMessage=connection.recv(1024)
print("Connection ended.")
connection.close()
这是客户端:
import socket
HOST="127.0.0.1"
PORT=5000
print ("Attempting connection")
mySocket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
mySocket.connect( ( HOST, PORT) )
except socket.error:
print("Call to connect failed")
print ("Connected to server")
serverMessage=mySocket.recv(1024)
while serverMessage!="Server: end":
if not serverMessage:
break
print (serverMessage)
clientMessage=input("Client: ")
mySocket.send("Client: "+clientMessage)
serverMessage=mySocket.recv(1024)
print ("Connection ended.")
mySocket.close()
这是错误:
File "C:/Python34/python 3.4/client.py", line 13, in <module>
serverMessage=mySocket.recv(1024)
OSError: [WinError 10057] A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied
错误说我做错了地址(?)
我无法理解错误想要我做什么。 你能帮助我吗?
好的,我对您的两个程序进行了一些编辑。 由于您使用的是 python 3,因此您需要将通过套接字发送和接收的数据作为字节数组处理。下面的客户端和服务器程序使用 python 3.5.1 为我工作。 希望这可以帮助。
此外,我摆脱了服务器中的while 1
无限循环并删除了 try/except 语句,因为我觉得它们没有添加任何内容。 如果您要除 socket.error 之外,您至少应该在那时退出程序,因为这里是一个致命错误。
服务器.py
import socket
HOST="127.0.0.1"
PORT=5000
mySocket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mySocket.bind( (HOST, PORT) )
mySocket.listen(1)
print("Waiting for connection")
connection, address=mySocket.accept()
print("Connection recieved from:", address[0])
connection.send(bytearray("SERVER>>> Connection successful", "utf-8"))
clientMessage=connection.recv(1024)
while clientMessage != "Client: end":
if not clientMessage:
break
print (clientMessage)
serverMessage=input("Server: ")
connection.send(bytearray("Server: "+serverMessage, "utf-8"))
clientMessage=connection.recv(1024)
print("Connection ended.")
connection.close()
客户端.py
import socket
HOST="127.0.0.1"
PORT=5000
print ("Attempting connection")
mySocket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mySocket.connect( ( HOST, PORT) )
print ("Connected to server")
serverMessage=mySocket.recv(1024)
while serverMessage!="Server: end":
if not serverMessage:
break
print (serverMessage)
clientMessage=input("Client: ")
mySocket.send(bytearray("Client: "+clientMessage, "utf-8"))
serverMessage=mySocket.recv(1024)
print ("Connection ended.")
mySocket.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.