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