Programowanie > Języki skryptowe
[python] problem z polaczeniem servera z klientem
920806:
Witam,
Napisałem 2 skrypty przy pomocy modulu socket.
Jeden z nich pełni role serwera,a drugi klienta(wszystko na jednym komputerze).
Server nasłuchuję na porcie 8989,pod adresacja 127.0.0.1
Klient ma sie podłączyć pod ten adres, no i w sumie to robi.
Ale gdy chce zmienić adres ip server na np. 192.168.1.10 otrzymuje komunikat:
--- Kod: ---
OSError: [Errno 99] Cannot assign requested adress.
--- Koniec kodu ---
Wszystkie skrypty odpalam przez python 3.5
Ostatecznie chciał bym osiągnąć komunikacje miedzy dwoma komputerami ..ale czy jak podam adres pętli zwrotnej na jednym komputerze to klient na drugim nie będzie próbował sie komunikować ze swoja własną pętlą? To bez sensu ,z drugiej strony jak wskazać serwer klientowi jeśli nie moge mu przypisać innej adresacji ..jesli trzeba udostępnię kod :)
Paweł Kraszewski:
--- Cytat: 920806 w 2017-02-20, 11:37:40 ---jesli trzeba udostępnię kod :)
--- Koniec cytatu ---
No, trzeba. Z informacją o adresacji obu komputerów.
920806:
Żeby nie mieszać ..Zmieniłem adresację na tę działającą
Serwer:
--- Kod: ---
import socket
#
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
adres_s = ("127.0.0.1",8989)
s.bind(adres_s)
s.listen(5)
while True:
c,a = s.accept()
print("Odpowiedź z:",a)
c.send("Hello",a[0])
s.close()
--- Koniec kodu ---
klient:
--- Kod: ---
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
adres= ("127.0.0.1",8989)
s.connect(adres)
s.send("HELLO".encode('utf-8'))
s.close()
--- Koniec kodu ---
W przypadko drugiego komputer zapomniałem uwzględnić 1 ważny szczegół .. komputer działa pod Windowsem ..:/. Post pisałem w pracy :( ..|
adresacja :
komputer1 linux(serwer)
--- Kod: ---
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.3 netmask 255.255.255.0 broadcast 192.168.1.255
--- Koniec kodu ---
komputer 2 (klient)
--- Kod: ---
Adres IPv4. . . . . . . . . . . . . : 192.168.1.2(Preferowane)
Maska podsieci. . . . . . . . . . : 255.255.255.0
Brama domyślna. . . . . . . . . . : 192.168.1.1
Serwer DHCP . . . . . . . . . . . : 192.168.1.1
Serwery DNS . . . . . . . . . . . : 192.168.1.1
--- Koniec kodu ---
Paweł Kraszewski:
Nie widzę, żeby któryś z komputerów miał adres 192.168.1.10. Serwer musi słuchać na którymś z adresów przypisanych komputerowi na którym działa, albo na specjalnym adresie 0.0.0.0 (IPv4)/::0 (IPv6) oznaczającym słuchanie na wszystkich dostępnych interfejsach.
920806:
Po zmianie adresacji , dostaję taki komunikat
--- Kod: ---
s.connect(adres)
OSError: [WinError 10049] Żądany adres jest nieprawidłowy w tym kontekście
--- Koniec kodu ---
Po wyłączenie zapory ten sam komunikat , nie wiem gdzie powienienem zacząć szukać .. Cały skrypt jest oparty o kod z dokumentacji ...
Tak przy okazji , czy dane przesyłane przez klienta są określne i serwer sprawdza co się mu wysyła ?
mam na myśli sytuacje,gdy nie użyje metody get w metodzie send(),a raczej zwykły tekst np. Hello Word
Nawigacja
[#] Następna strona
Idź do wersji pełnej