Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一端口上发送和接收消息?点对点消息应用程序python_Python_Sockets - Fatal编程技术网

在同一端口上发送和接收消息?点对点消息应用程序python

在同一端口上发送和接收消息?点对点消息应用程序python,python,sockets,Python,Sockets,我正在尝试创建一个点对点消息应用程序,我知道我需要该应用程序的每个实例同时作为服务器和客户端,正如我为下面的代码所做的那样,但我想知道如何设置端口,我可以在同一端口上发送和接收消息吗 下面的代码是应用程序的一个实例,我可以与另一个版本通信,但我必须将另一个版本设置为在端口9000上发送消息,在6190上接收消息。这将无法继续工作,因为第三个用户将如何连接 当前情况: 用户1:9000接收,6190发送 用户2:6190接收,9000发送 import socket import time imp

我正在尝试创建一个点对点消息应用程序,我知道我需要该应用程序的每个实例同时作为服务器和客户端,正如我为下面的代码所做的那样,但我想知道如何设置端口,我可以在同一端口上发送和接收消息吗

下面的代码是应用程序的一个实例,我可以与另一个版本通信,但我必须将另一个版本设置为在端口9000上发送消息,在6190上接收消息。这将无法继续工作,因为第三个用户将如何连接

当前情况: 用户1:9000接收,6190发送 用户2:6190接收,9000发送

import socket
import time
import threading

global incoming
def server_socket(): #call server_socket() in build method?
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.bind(('', 9000))
        s.listen(1)
        host_name = socket.gethostname()
        ip_address = socket.gethostbyname(host_name)
        print("IP address is: ", ip_address)
    except socket.error as e:
        print("Socket Error !!", "Unable To Setup Local Socket. Port In Use")

    while True:
        conn, addr = s.accept()

        incoming_ip = str(addr[0])
        data = conn.recv(4096)
        data = data.decode('utf-8')
        print("message recieved is: ", data)
        conn.close()

    s.close()


def client_send_message():

        message = "Hello World"
        message = message.encode('utf-8')
        c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        try:
            c.connect(("127.0.0.1", 6190))
        except Exception as e:
            print("Connection Refused", "The Address You Are Trying To Reach Is Currently Unavailable")

        try:
            c.send(message)
        except Exception as e:
            print(e)

        c.close()

t = threading.Thread(target=server_socket)
t.start()
for i in range(5):
    time.sleep(30)
    client_send_message()

您当前使用TCP,在这种设计中,每个客户端都需要一个单独的套接字。不过,您可以在这个套接字上双向交换数据。对等网络中更常见的是UDP:在这里,您可以使用单个套接字从任意客户端获取数据,并将数据发送到任意客户端。

啊,好的,我将研究UDP并修改我的代码,谢谢