2014-12-31 14 views
5

Mam prosty serwer UDP wdrożone w Pythonie:gniazdo Python działa przez LAN, ale nie przez WiFi

import socket 

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.bind(("",10005)) 

while True: 
    data = sock.recv(1024) 

ten kod na komputerze A. wyślę UDP poleceń z komputera B w tych dwóch sytuacjach:

  1. Zarówno A, jak i B są podłączone do routera w sieci lokalnej za pomocą kabla LAN.
  2. Zarówno A, jak i B są podłączone do routera przez Wi-Fi.

Pakiety UDP są odbierane w pozycji 1 (kabel LAN), ale nie w sytuacji 2 (przez Wi-Fi). W obu przypadkach Wireshark pokazuje odebrany pakiet na komputerze A. Jakieś przemyślenia?

OS: Windows

Program klienta:

import socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.sendto(char,("192.168.1.107",10005)) 
sock.close() 

mam zbliżyć się do znalezienia rozwiązania. Windows upuszcza pakiety UDP. Sprawdziłem komendą netstat -s -p UDP. Za każdym razem, gdy komputer wysyłający wysyła pakiety UDP, zwiększają się błędy odbioru. Teraz muszę po prostu dowiedzieć się, dlaczego pakiety są odbierane błędnie.

Edytuj Testowałem to na innych komputerach. To działa. Zmieniłem zaporę na komputerze, na którym nie działa, ale nadal nie mogę znaleźć tego, co filtruje pakiet UDP.

+1

Jaki jest program klienta i jakiej wersji systemu Windows używasz? – rlms

+0

systemu Windows 7. Program uproszczony klient używany: import gniazdo skarpetka = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) sock.sendto (char ("192.168.1.107", 10005)) sock.close () – user3098466

+0

Czy można uruchomić 'netstat -r' i pokazać wyjście tutaj. –

Odpowiedz

0

Sprawdź ustawienie zaufania w sieci Wi-Fi urządzenia serwerowego. Według this article firmy Microsoft:

na przykład programu, który akceptuje połączenia przychodzące z Internet (jak program do wymiany plików) nie mogą pracować w profilu publicznym ponieważ domyślne ustawienie Zapora systemu Windows blokuje wszystkie połączenia przychodzące do programów, których nie ma na liście dozwolonych programów .

Domyślnie sieci Wi-Fi są umieszczane w profilu publicznym, więc brzmi to jak to, co się tutaj dzieje. Ponieważ wiesz, że pakiet działa poprawnie (formularz wireshark), najbardziej prawdopodobne jest to, że zapora odmawia dostarczenia go za Ciebie.

Alternatywą byłoby dodanie python do allowed programs list, jeśli nie jesteś całkowicie zaufania do sieci.

Powiązane problemy