[英]How do I accept TCP and UDP?
我試圖在我的服務器中同時實現 TCP 和 UDP 。 我可以接受來自客戶端的 TCP 或 UDP 端口連接。
例如,我想讓代碼在一個程序中接受 TCP 和 UDP :
# create a socket sockTCP = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #TCP sockUDP = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP # server address to connect to server_addressTCP = ('localhost', tcp_port) server_addressUDP = ('localhost', udp_port) # bind socket to adress and port number sockTCP.bind(server_addressTCP) sockUDP.bind(server_addressUDP) # wait for connections (clients) print("Waiting for connections...") print(" ") sockTCP.listen(20) request = '' while True: #TCP client_sock, client_addr = sockTCP.accept() data, addr = client_sock.recvfrom(1024) #UDP udp_data, udp_addr = sockUDP.recvfrom(1024) # DO SOMETHING WITH DATA......... client_sock.close()
如果你想實現一個監聽 UDP 和 TCP 的服務器,然后創建監聽線程:一個用於 UDP 和一個用於 ZB71636EF5F6A6DACD 連接。
這是一個監聽 TCP 和 UDP 端口的服務器示例。
import socket
import threading
tcp_port = udp_port = 1234
def udp_listen(conn):
while True:
data = conn.recv(1024)
if len(data) != 0:
print("recv:", data)
def tcp_listen(sock):
while True:
conn, _ = sock.accept()
try:
while True:
data = conn.recv(1024)
if len(data) == 0:
break
print("recv:", data)
except Exception:
pass
try:
conn.close()
except Exception:
pass
# create a socket
sockTCP = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # TCP
sockUDP = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
# server address to connect to
server_addressTCP = ('localhost', tcp_port)
server_addressUDP = ('localhost', udp_port)
# bind socket to adress and port number
sockTCP.bind(server_addressTCP)
sockUDP.bind(server_addressUDP)
sockTCP.listen(20)
t1 = threading.Thread(target=tcp_listen, args=(sockTCP,))
t2 = threading.Thread(target=udp_listen, args=(sockUDP,))
print("Waiting for connections...")
t1.start()
t2.start()
t1.join()
t2.join()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.