Подключение двух ноутбуков в одной сети через кабель Ethernet с помощью гнезда UDP - PullRequest
0 голосов
/ 15 октября 2019

У меня есть этот код:

import io
import socket
import sys

print("Are you server or client?") 
print("\t\"s\" --- server")
print("\t\"k\" --- client")
print("To quit press \"q\"") 


def typeChoice(choice):
    if choice == 's':
        print("-----------------------------------")
        print("             Im server             ") 
        print("-----------------------------------")
        print("\n\n")

        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        bufferSize  = 1024
        msgFromServer = "\tHello client, you have been connected to server."
        bytesToSend = str.encode(msgFromServer)

        server_name = socket.gethostname() 
        server_ip = socket.gethostbyname(server_name)

        print("-----------------------------------")
        print("Ethernet IPv4 address :\t",server_ip)
        print("Set port for server :")
        server_port_string = input()
        print("-----------------------------------")
        print("\n\n")

        server_port = int(server_port_string)

        try:
            sock.bind((server_ip, server_port))
            #sock.listen()
            print("-----------------------------------")
            print('         Server has binded         ')
            print('          Im listening...          ')
            print("-----------------------------------")
        except bind_error:
            print("Bind error")
            SystemExit("Quitting program")        

        while(True):
            bytesAddressPair = sock.recvfrom(bufferSize)
            message = bytesAddressPair[0]
            address = bytesAddressPair[1]
            clientMsg = "Message from CLIENT:{}\t".format(message)
            #clientIP  = "Client IP Address:{}".format(address)            
            print(clientMsg)
            #print(clientIP)      

            sock.sendto(bytesToSend, address)

    elif choice == 'k':
        print("-----------------------------------")
        print("             Im client             ")
        print("-----------------------------------")
        print("\n\n") 

        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        bufferSize  = 1024
        msgFromClient = "\tHello server, I connected to you"
        bytesToSend = str.encode(msgFromClient)

        print("-----------------------------------")
        print("Set IP to connect to server :")
        server_ip = input()
        print("\n\n")
        print("Set port to connect to server :")
        server_port_string = input()
        print("-----------------------------------")
        print("\n\n")

        server_port = int(server_port_string)

        serverAddressConnection = (server_ip, server_port)

        try:
            sock.connect((server_ip, server_port))
            print("Connected!")
        except socket_error:
            print("NOT connected!")

        sock.sendto(bytesToSend, serverAddressConnection)

        msgFromServer = sock.recvfrom(bufferSize)
        msg = "Message from SERVER {}\t".format(msgFromServer[0])
        print(msg)
        print("Set fragment size :")
        frag_size = input()

    elif choice == 'q':
        SystemExit("Quitting program") 
    else:
        print("Wrong input!") 


choice = input()
typeChoice(choice)

Я запускаю этот скрипт сначала как сервер, а затем как клиент. Я запускаю их обоих на одном компьютере (у меня открыты две командные строки), и все работает как надо. На обоих я ввожу тот же IP и тот же порт. Клиент получает сообщение от клиента, что он подключен к серверу, а сервер получает сообщение, что клиент подключен к нему.

Но теперь я подключаю два ноутбука по кабелю Ethernet. Оба ноутбука находятся в одной сети. На моем сервере я запускаю порт, и я жду, пока клиент подключится. На втором ноутбуке я запускаю клиент, я ввожу IP и порт (такой же, как у сервера), и затем он «зависает». Клиент не получает сообщение, а также сервер не получает сообщение. Просто ничего не происходит.

Я получил Python v 3.7

Что я делаю не так?

...