我正在尝试用Python实现一个非常基本的客户端和服务器聊天虽然遇到了一些麻烦,我得到的回应是我只能同时运行客户端或服务器,所以我无法聊天。
客户代码:
#client
import socket
import time
HOST = "localhost"
PORT = 5454
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((HOST,PORT))
while True:
data = raw_input("Enter..... ")
s.sendto(data,(Host,PORT))
print "Server says: " + s.recv(1024)
if data=="bye" or s.recv(1024)=="bye":
print "Exiting..........."
time.sleep(1)
break
服务器代码:
#server
import socket
import time
HOST = "localhost"
PORT = 5454
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((HOST,PORT))
while True:
print "Client says: " + s.recv(1024)
data = raw_input("Enter..... ")
s.sendto(data,(HOST, PORT))
if data=="bye" or s.recv(1024)=="bye":
print "Exiting.................."
time.sleep(1)
break
程序关闭后PORT会自动关闭,还是需要以某种方式手动关闭PORT。
答案 0 :(得分:1)
在This页面上有套接字的示例代码,您可以轻松地适应您的程序。
在您的脚本中,第一个问题是:
s.bind((HOST,PORT))#for client
因为服务器绑定到ip而不是客户端,使用明显的功能将连接绑定到服务器:
s.connect((HOST,PORT))
另一个问题是,你没有听取新连接,并接受它们:
s.listen(1) #number defines amount of queued connection to server
conn, addr = s.accept()
最后一个错误是如果客户端连接到服务器,则无需确定即将数据发送到客户端。
希望我帮助你解决问题。 KubaBest