• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python socket

VPS Starter Arubacloud
0 głosów
318 wizyt
pytanie zadane 28 października 2020 w Python przez WojtaZio23 Użytkownik (660 p.)
serwer.py:
import socket
import threading
lista_klient = []
def nowy_klient():
    while True:
        msg = csock.recv(1024)
        print(ad, " >> ", msg)
        msg = raw_input("SERWER>> ")
        csock.send(msg)

#stworzenie socketu
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#utworzenie adresu serwer na naszej maszynie z dowolnie wymyślonym portem
host = 'localhost'

port = 1416

print("Serwer uruchomiony!")
print("Czekam na polaczenie z zewnatrz...")

sock.bind((host, port))
sock.listen(0) #serwer 'nasłuchuje' czy nie przychodzi polaczenie od jakiegos klienta



while True:
    c, ad = sock.accept() #realizacja/akceptacja polaczenia
    lista_klient.append(c)
    print("Polaczono z", ad)
    thread.start_new_thread(nowy_klient(c, ad)) #utworzenie kolejnego wątku/procesu dla kolejnego klienta
    

    #print("Zamykam")
    #sock.close()



client.py:

import socket 

def serv_conn():
	host = 'localhost'
	port = 1416

	csock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #socket klienta
	csock.connect((host,port))
	msg = "Wiadomosc od klienta"
	while True:
		csock.send(msg.encode('ascii'))
		data = csock.recv(1024)
		print(str(data.decode('ascii')))
		if data == None:
			csock.close()

if __name__ == '__main__':
	serv_conn()

LOG:
Traceback (most recent call last):
  File "C:\Users\WOJTEK\Desktop\czat\client.py", line 18, in <module>
    serv_conn()
  File "C:\Users\WOJTEK\Desktop\czat\client.py", line 12, in serv_conn
    data = csock.recv(1024)
ConnectionResetError: [WinError 10054] Istniej�ce po��czenie zosta�o gwa�townie zamkni�te przez zdalnego hosta
[Finished in 0.2s with exit code 1]
[shell_cmd: py -3 -OO -u "C:\Users\WOJTEK\Desktop\czat\client.py"]
[dir: C:\Users\WOJTEK\Desktop\czat]
[path: C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\dotnet\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Users\WOJTEK\AppData\Local\Microsoft\WindowsApps;C:\Users\WOJTEK\.dotnet\tools]

Siedzę na tym już od kliku godzin. O co może chodzić z tym przerywaniem połączenia przez zdalnego hosta?

 

1 odpowiedź

0 głosów
odpowiedź 28 października 2020 przez overcq Pasjonat (22,150 p.)

Nie podałeś, co wypisuje server.py.

U mnie działa coś takiego:

serwer:

import socket
import threading
import code

ic = code.InteractiveConsole()
lista_klient = []
def nowy_klient(csock,ad):
	while True:
		msg = csock.recv(1024)
		print(ad, " >> ", msg)
		msg = ic.raw_input("SERWER>> ")
		csock.send(msg.encode('ascii'))
 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = 'localhost'
 
port = 1416
 
print("Serwer uruchomiony!")
print("Czekam na polaczenie z zewnatrz...")
 
sock.bind((host, port))
sock.listen(1)
 
 
 
while True:
	c, ad = sock.accept()
	lista_klient.append(c)
	print("Polaczono z", ad)
	nowy_klient(c, ad)
	
	#print("Zamykam")
	#sock.close()
 

klient:

import socket 
 
def serv_conn():
	host = 'localhost'
	port = 1416
 
	csock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #socket klienta
	csock.connect((host,port))
	msg = "Wiadomosc od klienta"
	while True:
		csock.send(msg.encode('ascii'))
		data = csock.recv(1024)
		print(str(data.decode('ascii')))
		if data == None:
			csock.close()
 
if __name__ == '__main__':
	serv_conn()

Przypuszczalnie chodziło o to, że nie kodowałeś na serwerze msg.

W tym przykładzie usunąłem obsługę wątków.

komentarz 29 października 2020 przez WojtaZio23 Użytkownik (660 p.)
Poprawiłem błąd i nadal wyskakuje ten sam error. Potem dosłownie skopiowałem i wkleiłem twój kod i nadal to samo. Może to być coś związanego z firewallem?
komentarz 29 października 2020 przez WojtaZio23 Użytkownik (660 p.)

@overcq, EDIT: Problem rozwiązany. Już wszystko działa jak należy. Wielkie dzięki za pomoc!

Podobne pytania

0 głosów
0 odpowiedzi 223 wizyt
pytanie zadane 27 października 2020 w Python przez WojtaZio23 Użytkownik (660 p.)
+1 głos
1 odpowiedź 374 wizyt
pytanie zadane 4 września 2018 w C i C++ przez lolk45 Gaduła (3,210 p.)
+4 głosów
1 odpowiedź 306 wizyt
pytanie zadane 28 grudnia 2021 w Nasze projekty przez KopfSzmercen Bywalec (2,870 p.)

93,025 zapytań

141,990 odpowiedzi

321,293 komentarzy

62,374 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...