有问题创建代理服务器应用程序



我正在使用Python在套接字编程中创建代理(TCP)的问题,他们使用python在客户端/服务器之间进行通信以发送消息。问题如下:我想创建客户端,代理和服务器Python应用程序,在该应用程序中,客户端只能与代理进行通信,并且代理与服务器进行通信。每个客户都会向代理发送一个号码,并等待答案。之后回答他们关闭连接。代理等待固定的n个客户端向其发送一个数字。什么时候到达n,代理将接收的号码发送到服务器(接着是端字符串),并等待它的答案。从服务器收到答案后,代理将其发送回所有客户端。此后,代理可以关闭通信。

服务器从代理n数字接收,之后,结束字符串,这表明代理不会向服务器发送任何其他消息。服务器计算平均值,并将其发送到代理。此后,它可以关闭连接。

我需要在代理上创建2个套接字对象(一个用于客户端,一个用于服务器)。请输入您的想法,如何为客户,服务器和代理编写程序?

谢谢。

您必须创建一个在客户端和代理之间连接的套接字,以及一个在代理和服务器之间连接的套接字。

插座只能传输原始字节,因此您必须以选择的方式将数字转换为字符串。您不必发送最终信号。而是一次发送所有号码。您可以使用泡菜模块将数字数组转换为字符串,将其发送然后转换为后背,或者只使用自己的字符串方法,然后再次转换为数字。

感谢您的宝贵输入。这是我创建的代码。请检查并让我知道如何使用Select ...适用于客户::::

import socket
HOST = 'localhost'
PORT = 21001
proxysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
proxysock.connect((HOST, PORT))
while 1:
      x = int(raw_input())
      proxysock.sendall(x)
      data = proxysock.recv(1024)
      proxysock.close()

代理::

   import socket
   from thread import *
   HOST = 'localhost'
   PORT = 21001
   max_conn = 5
   buffer_size = 2048
def start():
proxyserversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
proxyserversock.bind((HOST, PORT))
proxyserversock.listen(max_conn)
while 1:
    client_sock, addr = proxyserversock.accept()
    data = client_sock.recv(buffer_size)

    serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    serversock.connect((HOST, PORT))
    serversock.sendall(X)
    serversock.recv(buffer_size)
    client_sock.sendall()
    serversock.close()  
    client_sock.close()

用于服务器::

   import socket 
   HOST = 'localhost'
   PORT = 21001

 serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 serversock.bind((HOST, PORT))
 s.listen(10) 
 while 1:
       proxyclientsock, addr = serversock.accept()
data = proxyclientsock.recv(2048) 
proxyclientsock.sendall()
proxyclientsock.close()

我已经编写了代码,将客户端与代理和代理与客户端连接。请输入您的想法,n个客户端数(例如4个客户端)如何将整数编号发送到代理?然后代理将它们发送到服务器。我想按照以下来实现代码:如果有4个客户端将数字发送到10、10,10向代理然后结束,则代理将其接收为{10,10,10,10,end end}并发送到服务器。在计算平均值(例如; AVG = 10 10 10 10/4 = 10)之后,服务器回复为代理,然后将代理发送给客户端的平均结果。

我了解您以前回复的内容,但无法在代码中实现(使用SELECT)。请参阅代码并编辑它们。我真的很感激。谢谢。

相关内容

最新更新