Python客户端和服务器聊天

时间:2013-12-29 22:20:48

标签: python client-server

我正在尝试用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。

1 个答案:

答案 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