2014-12-31 14 views
5

Tôi có một máy chủ UDP đơn giản thực hiện trong python:Python ổ cắm hoạt động trên mạng LAN nhưng không thông qua Wifi

import socket 

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

while True: 
    data = sock.recv(1024) 

tôi chạy mã này trên máy tính A. tôi gửi UDP lệnh từ máy tính B ở hai tình huống này:

  1. Cả A và B được kết nối với bộ định tuyến trong mạng cục bộ qua cáp LAN.
  2. Cả A và B đều được kết nối với bộ định tuyến qua Wifi.

Các gói UDP được nhận trong situaltion 1 (LAN Cable) nhưng không phải trong tình huống 2 (qua Wifi). Trong cả hai trường hợp, Wireshark hiển thị gói nhận được trên máy tính A. Bất kỳ suy nghĩ nào?

OS: Windows

Chương trình khách hàng:

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

tôi đã đến gần với việc tìm kiếm giải pháp. Windows đang thả các gói UDP. Tôi đã kiểm tra với lệnh netstat -s -p UDP. Bất cứ khi nào máy gửi sẽ gửi các gói UDP, thì lỗi Nhận lỗi tăng lên. Bây giờ tôi chỉ cần tìm ra lý do tại sao các gói tin đang được nhận sai.

Chỉnh sửa Tôi đã thử nghiệm trên các máy tính khác. Nó hoạt động. Tôi đã chuyển đổi của tường lửa trên máy tính, nơi nó không hoạt động nhưng vẫn không thể tìm ra những gì được lọc ra các gói UDP.

+1

Chương trình khách hàng là gì và bạn đang sử dụng phiên bản Windows nào? – rlms

+0

Windows 7. Chương trình Giản Khách hàng sử dụng: nhập khẩu ổ cắm vớ = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) sock.sendto (char, ("192.168.1.107", 10005)) sock.close () – user3098466

+0

Bạn có thể chạy 'netstat -r' và hiển thị đầu ra ở đây không. –

Trả lời

0

Kiểm tra cài đặt tin cậy trên mạng Wifi cho máy chủ. Theo this article từ Microsoft:

Ví dụ, một chương trình mà chấp nhận các kết nối gửi từ Internet (như một chương trình chia sẻ tập tin) có thể không làm việc trong hồ sơ cá nhân Công vì các thiết lập mặc định của Windows Firewall sẽ chặn tất cả các kết nối gửi đến các chương trình không nằm trong danh sách các chương trình được phép .

Tôi tin rằng theo mặc định, mạng Wifi được đặt trong hồ sơ công khai, vì vậy có vẻ như những gì đang diễn ra ở đây. Vì bạn biết gói tin đang nhận được ở đó OK (hình thức wireshark), giải thích rất có thể là tường lửa từ chối cung cấp nó cho bạn.

Cách khác là thêm python vào allowed programs list nếu bạn có lẽ không hoàn toàn tin tưởng vào mạng.

Các vấn đề liên quan