【问题标题】:Python Server-Client Communication with each otherPython Server-Client 相互通信
【发布时间】:2016-02-12 00:53:55
【问题描述】:

我正在尝试修改 tcp/ip 服务器-客户端通信。只有服务器可以与客户端通信。我正在尝试找到一种简单的方法将消息发送回服务器。不是聊天!!只是一个服务器,它将向客户端发送数据并从客户端接收数据。

我正在使用这个例子:

服务器:

    host="my_ip"
    port=4446                  
    from socket import *              
    s=socket()
    s.bind((host,port))                 
    s.listen(1)                         
    print "Listening for connections.. "
    q,addr=s.accept()               
    var = 1
    while var == 1 :
         data=raw_input("Enter data to be send:  ")  
         q.send(data)  
    s.close()

客户:

    host="my_ip"
    port=4446 
    from socket import *
    s=socket(AF_INET, SOCK_STREAM)
    s.connect((host,port))
    var = 1
    while var == 1 :  
         msg=s.recv(1024)
         print "Message from server : " + msg
         #response = "Message delivered"   # Response to be send 
         #s.sendto(response(host,port)) 
    s.close()

【问题讨论】:

  • 您考虑过使用 ZeroMQ 吗?它非常易于使用,并内置了各种奇妙的功能,例如确保客户端永远不会收到未完成的消息,而且速度非常快。它也是无环境的,这意味着您可以用您喜欢的任何语言编写客户端或服务器。我建议你试一试。你也可以试试redis服务器,它内置了绝妙的PUB SUB系统,而且非常好用
  • 非常感谢...我会努力的

标签: python python-2.7 python-3.x tcpclient tcpserver


【解决方案1】:

Python 有一个内置类,可以让你的生活更轻松一些。 http://docs.python.org/2/library/socketserver.html。但是,我不确定我是否理解您问题的第二部分;您可以像让服务器向客户端发送数据一样简单地将数据发送回服务器。

【讨论】:

  • 我需要但我找不到的唯一方法是让客户发回一些东西……我找不到方法。我正在使用 .send 和 .recv 但我收到一个错误:不允许发送或接收数据的请求,因为未连接套接字并且(使用 sendto 调用在数据报套接字上发送时)没有提供地址
【解决方案2】:

使用 sock.sendall()。此外,您不应该只将 var 命名为“var”,因为它没有描述它的作用。我会创建一个布尔值并将其命名为“isListening”或“isSending”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多