Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: sending data between two computers via sockets

I am working on a script that would transmit the data between two distinct computers with access to the internet. I am using python's socket standard module. It works fine when I run both client and server on single computer but I am not able to make the things work when they run on different computers.

Here is a part of my server code:

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()

And here is a part of my client code:

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()

When I run these scripts on two different computers with internet access the client is unable to connect and raises an error and the server is waiting for connections forever.

What am I doing wrong?

like image 856
Piotr Dabkowski Avatar asked Dec 22 '12 22:12

Piotr Dabkowski


1 Answers

This does probably not have to do with your code which looks okay. I rather think that this is a problem with the IP addresses that you're using.

If the computers are on different networks you need to make sure that the IP address that you're passing is the one accessible to the net. Basically what this means is that if the IP you're using starts with 192.168.?.? then you're using the wrong IP.

You can easily check this by running the command:
(windows): ipconfig
(linux): ifconfig

If you're using a correct IP address then I'd check my router settings and/or firewall settings which may very well block the port number that you're trying to use.

like image 146
Daniel Figueroa Avatar answered Nov 03 '22 00:11

Daniel Figueroa