没有收到互联网上的Python套接字

时间:2018-04-09 06:19:24

标签: python sockets server udp client

我的问题是我的server.py没有通过互联网从client.py接收数据。

Client.py:

import socket
import time
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

UDP_IP = "myip"
UDP_PORT = 5001

count = 0
start = int(round(time.time() * 1000))

finish2 = 0
start2 = 0
while count < 1000:
    msg = str(count)
    count+=1
    sock.sendto(msg.encode("utf-8"), (UDP_IP, UDP_PORT))
    data = sock.recv(3000)
    if(data.decode("utf-8") == "1"):
        start2 = int(round(time.time() * 1000))
    elif(data.decode("utf-8") == "14999"):
        finish2 = int(round(time.time() * 1000))
    print(data)
    print(finish2 - start2)

finish = int(round(time.time() * 1000))
print(finish - start)
i = input("")

和Server.py

import socket
import time

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

UDP_IP = "192.168.1.68"
UDP_PORT = 5001
BUFFER_SIZE = 1024

sock.bind((UDP_IP, UDP_PORT))
start = 0
finish = 0
while True:
    data, addr = sock.recvfrom(BUFFER_SIZE)
    if(data.decode("utf-8") == "1"):
        start = int(round(time.time() * 1000))
    elif(data.decode("utf-8") == "14999"):
        finish = int(round(time.time() * 1000))
        print (finish-start)
    print (data, addr)
    sock.sendto(data, addr)

i = input("")

我的rooter使用外部和内部端口= 5001打开。 我不明白我忘记了什么。 PS:有一个计时器,只是看看它需要多少时间通过互联网发送和接收15000个数据。

谢谢

1 个答案:

答案 0 :(得分:0)

尝试使用更简单的代码来建立连接。

简单echo服务器,具有硬编码值,单发,单接收。在服务器端打印addr来自recvfrom

在服务器端验证套接字是否正确绑定netstat -pnlt | grep 5001并验证防火墙是否允许您进入iptables -L INPUT | grep 5001,在客户端验证端口是否可访问nmap -sU -p 5001 <server address>。这些命令适用于linux,如果你的服务器/客户端在windows上运行,google就是你的朋友

-1对于过于复杂的例子,你有网络问题,而不是“如何做udp speedtest”问题。