PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Thursday, April 21, 2022

[FIXED] How to connect my server to other machine using socket library in Python?

 April 21, 2022     connection, ftp, python, python-3.x, sockets     No comments   

Issue

I am new to socket library and server side programming. I made 2 scripts which runs perfectly on my machine i.e. server.py and client.py. But when i test it on two different computers it doesn't worked.

What i want is to make my server.py file connected to client.py, where server.py will run on my machine and it will be connected to client.py on a separate machine at any location in the world.

I just know socket only. But if this problem can be solved by use of other library, then also it will be fine.

Here is my code:

server.py

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostbyname(socket.gethostname())
port = 12048

s.bind((host, port))

s.listen()
print("Server listening @ {}:{}".format(host, port))

while True:
    c, addr = s.accept()
    print("Got connection from", addr)

    c.send(bytes("Thank you", "utf-8"))

client.py

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '192.168.1.162'  # The IP printed by the server must be set here
port = 12048

s.connect((socket.gethostname(), port))

msg = s.recv(1024)
print(msg.decode("utf-8"))

I don't know how it's possible but if it is then please answer this.

Also, i want to receive files from client.py to my machine. Is it possible in socket or i have to import any other library?

Any help will be appreciated.


Solution

The reason the client will only connect to the server running on the same computer is because you are using s.connect((socket.gethostname(), port)) instead of s.connect((host, port)). Your host IP variable is never being used. This error means that the client will be trying to connect to its own hostname, which would be itself, and so that is why it only works on one single computer.

You should modify client.py like this:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '192.168.1.162'  # Make sure this is set to the IP of the server
port = 12048

s.connect((host, port))

msg = s.recv(1024)
print(msg.decode("utf-8"))

Now you will be able to connect to a server running on a different computer.



Answered By - Noah Broyles
Answer Checked By - Marilyn (PHPFixing Volunteer)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing