user13140483
user13140483

Reputation:

How to send a message between 2 computers

I have looked into many tutorials and source code for pythons socket modal to try to send a simple string between two computers.

I have made my code work independently on the PCs, but have failed to get the code to run on both. Here is the code I am currently working with:

#server.py
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 1234))
s.listen(5)

while True:
    # now our endpoint knows about the OTHER endpoint.
    clientsocket, address = s.accept()
    print(f"Connection from {address} has been established.")
    clientsocket.send(bytes("Send test","utf-8"))
    clientsocket.close()
#client.py
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 1234))


while True:
    full_msg = ''
    while True:
        msg = s.recv(8)
        if len(msg) <= 0:
            break
        full_msg += msg.decode("utf-8")

    if len(full_msg) > 0:
        print(full_msg)

I am running the client script on both computers, but when I run the script on the pc not running the server, I get error the connection refused error [#10061]. I am running python 3.7, one pc is a laptop connected via internet, and one is a desktop connected to a router via Ethernet cable.

If someone knows what I need to change to get the program to run correctly, it would be much appreciated.

Upvotes: 2

Views: 315

Answers (2)

Rurien
Rurien

Reputation: 369

I think you didn't open your '1234' port in your firewall.

https://www.windowscentral.com/how-open-port-windows-firewall

If you are using windows, this link can help you

Upvotes: 0

dkirk500
dkirk500

Reputation: 11

I am a rookie in python but I have experience in networking. Your problem sounds like a network issue to me. Before you run your program, you have to make sure there is connectivity between the two computers as you mentioned a laptop in the internet. Best way to know is pinging to each other. Your problem sounds like a typical NAT (network address translation issue).

Upvotes: 1

Related Questions