2012-12-22 18 views
8

Tôi đang làm việc trên một tập lệnh có thể truyền dữ liệu giữa hai máy tính khác nhau có quyền truy cập vào internet. Tôi đang sử dụng mô-đun chuẩn socket của python. Nó hoạt động tốt khi tôi chạy cả máy khách và máy chủ trên một máy tính nhưng tôi không thể làm cho mọi thứ hoạt động khi chúng chạy trên các máy tính khác nhau.Python: gửi dữ liệu giữa hai máy tính qua ổ cắm

Đây là một phần của mã máy chủ của tôi:

import socket, time,os, random 

class Server(): 
    def __init__(self,Adress=('',5000),MaxClient=1): 
     self.s = socket.socket() 
     self.s.bind(Adress) 
     self.s.listen(MaxClient) 
    def WaitForConnection(self): 
     self.Client, self.Adr=(self.s.accept()) 
     print('Got a connection from: '+str(self.Client)+'.') 


s = Server() 
s.WaitForConnection() 

Và đây là một phần của mã khách hàng của tôi:

import socket 

class Client(): 
    def __init__(self,Adress=("Here is the IP of the computer on which the \ 
            server scrip is running",5000)): 
     self.s = socket.socket() 
     self.s.connect(Adress) 

c = Client() 

Khi tôi chạy các kịch bản trên hai máy tính khác nhau với truy cập Internet khách hàng không thể kết nối và gây ra lỗi và máy chủ đang đợi kết nối mãi mãi.

Tôi đang làm gì sai?

+2

Hai máy tính này được kết nối như thế nào? Bất kỳ bộ định tuyến/tường lửa/thiết bị NAT nào trên đường dẫn. –

+0

Cả hai máy tính đều được kết nối với các WiFi khác nhau –

+0

Làm thế nào hai bộ định tuyến wifi này được cấu hình? –

Trả lời

7

Điều này có thể không liên quan đến mã của bạn. Tôi nghĩ rằng đây là một vấn đề với các địa chỉ IP mà bạn đang sử dụng.

Nếu máy tính đang ở trên các mạng khác nhau, bạn cần phải đảm bảo rằng địa chỉ IP bạn đang truy cập là địa chỉ có thể truy cập được vào mạng. Về cơ bản, điều này có nghĩa là nếu IP bạn đang sử dụng bắt đầu bằng 192.168.?.? sau đó bạn đang sử dụng IP sai.

Bạn có thể dễ dàng kiểm tra điều này bằng cách chạy lệnh:
(cửa sổ): ipconfig
(linux): ifconfig

Nếu bạn đang sử dụng một địa chỉ IP chính xác thì tôi muốn kiểm tra các thiết lập router của tôi và/hoặc cài đặt tường lửa có thể chặn số cổng bạn đang cố gắng sử dụng.

+1

Tôi chắc chắn đó là sự cố cấu hình vì bộ định tuyến sẽ cần chuyển tiếp cổng đến địa chỉ lan của máy chủ ... – l4mpi

+0

Sự cố được giải quyết. Đã xảy ra sự cố với bộ định tuyến hiện đang chuyển hướng gói dữ liệu đến máy tính nơi máy chủ được thiết lập. Tôi đã thay đổi nó trong các thiết lập router và làm cho nó chuyển hướng gói tin đến IP riêng của máy tính này (192.168.1.35) và cổng 5000. Bây giờ nó hoạt động tốt. Cảm ơn nhiều :) –