簡體   English   中英

如何接受 TCP 和 UDP?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM