使用python创建用于发送TCP和UDP数据包的客户端和服务器程序

使用python创建用于发送TCP和UDP数据包的客户端和服务器程序,python,sockets,tcp,udp,Python,Sockets,Tcp,Udp,我必须用python编写一个客户机和一个服务器程序,如果用户被问及是否希望通过TCP或UDP发送。服务器只是发回数据,因为我想知道需要多长时间(RTT) 服务器如何检测客户端发送的TCP或UPD数据 这只是出于教育目的,并非用于生产 到目前为止,我有以下代码: client.py import socket numerofpackets = int(raw_input("How many packets should be sent?\n> ")) connectiontype = ra

我必须用python编写一个客户机和一个服务器程序,如果用户被问及是否希望通过TCP或UDP发送。服务器只是发回数据,因为我想知道需要多长时间(RTT)

服务器如何检测客户端发送的TCP或UPD数据

这只是出于教育目的,并非用于生产

到目前为止,我有以下代码:

client.py

import socket

numerofpackets = int(raw_input("How many packets should be sent?\n> "))
connectiontype = raw_input("TCP or UDP?\n> ")
hostname = 'localhost'
i = 0

if connectiontype != "TCP" and connectiontype != "UDP":
    print "Input not valid. Either type TCP or UDP"
else:
    if connectiontype == "TCP":
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
        s.connect((hostname, 50000))

        while i < numerofpackets:
            start_time = time.time()
            s.send('tcp') 
            response = s.recv(1024)
            print time.time() - start_time
            i = i + 1

        s.close()
    elif connectiontype == "UDP":
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        while i < numerofpackets:
            start_time = time.time()
            s.sendto('udp', (hostname, 50000)) 
            response, serverAddress = s.recvfrom(1024)
            print time.time() - start_time
            i = i + 1

    s.close()

服务器必须同时侦听UDP和TCP。您可以使用两个服务器进程、线程或阻止服务器。

谢谢您的回复。我将TCP和UDP代码分离为2个文件,现在运行这两个服务器。
#for tcp
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind(("", 50000)) 
s.listen(1)

while True: 
    komm, addr = s.accept() 
    data = komm.recv(1024)
    komm.send(data) 

s.close()


#for udp
sudp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

sudp.bind(("", 50000)) 
while True: 
    daten, addr = sudp.recvfrom(1024)
    s.sendto(daten, addr)

s.close()