Jurkins Ierakstīts Novembris 26, 2019 Share Ierakstīts Novembris 26, 2019 Sveicināti normālā? tēmā! Saprotu, ka kāds smiesies?, bet esmu tupikā. Tātad tiek sperti pirmie kopīgie soļi ar to velna čūsku (kas gan neesot čūska, bet Montijs Paitons). TCP serveris un klients. Visvienkāršākais. No daudziem avotiem. import socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('localhost',9900)) server_socket.listen(1) print('server is running') while True: connection, address = server_socket.accept() print("new connection from {address}".format(address=address)) print(str(connection.recv(1024))) connection.close() un import socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(('localhost', 9900)) client_socket.send(bytes('hello from client ', encoding='UTF-8')) client_socket.close Palaižu serveri. Laižu klientu. Rezultātā dabūju šo: >>> RESTART: C:\Users\User\AppData\Local\Programs\Python\Python35\TCP_server.py server is running RESTART: C:/Users/User/AppData/Local/Programs/Python/Python35/TCP_client1.py Traceback (most recent call last): File "C:/Users/User/AppData/Local/Programs/Python/Python35/TCP_client1.py", line 4, in <module> client_socket.connect(('localhost', 9900)) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it >>> It kā pilns nets ar šo kļūdu, bet citam serveris nav palaists, citam "zemie" porti izmantoti, citam adreses nevienādas/nepareizas. Bet nu nevaru saprast, kas par lietu. Pitons 3.5, mūrī atvēru visus portus priekš pytonw.exe... Kur es lohojos? Vēl bišķi un iešu lasīt par ozona caurumu? 1 Link to comment Share on other sites More sharing options...
uldise Novembris 26, 2019 Share Novembris 26, 2019 ja ar Telnet mēģina pieslēgties pie minētā porta, arī tas pats? Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 (labots) Ar telnetu pieslēdzas. netstat -a -n rāda, ka 127.0.0.1:9900 listening Labots Novembris 26, 2019 - Jurkins Link to comment Share on other sites More sharing options...
TOoMoOT Novembris 26, 2019 Share Novembris 26, 2019 server.py: import socket from time import sleep server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('localhost',9900)) server_socket.listen(1) print('server is running') connection, address = server_socket.accept() print("new connection from {address}".format(address=address)) while True: sleep(2) print(str(connection.recv(1024))) connection.close() Link to comment Share on other sites More sharing options...
TOoMoOT Novembris 26, 2019 Share Novembris 26, 2019 Pirms 5 minūtēm , ieleja teica: tad tev vajadzētu redzēt 0.0.0.0:9900 Kāpēc? Esmu kaut ko palaidis garām? localhost vai tad standartā vienmēr nav 127.0.0.1? Es notestēju abus kodus un man arī bija 127.0.0.1:9900. Jebkurā gadījumā, problēma bija, ka connection, address = server_socket.accept() bija iebāzts ciklā Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 Pirms 33 minūtēm , ieleja teica: tad tev vajadzētu redzēt redzu Link to comment Share on other sites More sharing options...
AndrisBB Novembris 26, 2019 Share Novembris 26, 2019 Pirms 18 minūtēm , TOoMoOT teica: Jebkurā gadījumā, problēma bija, ka connection, address = server_socket.accept() bija iebāzts ciklā Tas jau atkarīgs no tā ko vēlas panākt. Ja grib apstrādāt pieslēgumu pēc pislēguma, tad tam jābūt ciklā, savādāk tik viens klients pieslēgsies un viss. Jebkurā gadījumā man @Jurkins iepostotais kods strādā. Pareizāk pat būtu katru requestu apstrādāt savā threadā. 1 Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 Pirms 1 minūtes , AndrisBB teica: kods strādā. hmmmm... velns, kur tad varētu būt problēma. Ports tiek uzklausīts... par tiem thrediem... gan jau viss ar laiku?. Link to comment Share on other sites More sharing options...
AndrisBB Novembris 26, 2019 Share Novembris 26, 2019 (labots) import socket import threading def handle_client(conn,addr): while True: print("Wait for data") data = conn.recv(1024) if not data: break print(str(data)) conn.close() def start_server(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('',9900)) server_socket.listen(1) print('server is running') while True: connection, address = server_socket.accept() print("new connection from {address}".format(address=address)) t = threading.Thread(target=handle_client, args=(connection, address)) t.start() connection.close() if __name__ == "__main__": start_server() Atstāj servera adresi tukšu Labots Novembris 26, 2019 - AndrisBB 1 Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 Paldies, @AndrisBB, bet pagaidām nezinu, ko ar šo visu darīt. Velns, čujs teica, ka vajag uz cita datora pamēģināt. Uz cita iet. Jāmeklē tomēr, kur problēma. Ņeporjadoks citādi. Link to comment Share on other sites More sharing options...
AndrisBB Novembris 26, 2019 Share Novembris 26, 2019 Un ja pieliec šo, gan clientā gan serverī? host_ip = socket.gethostbyname('localhost') print("IP : ",host_ip) Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 IP:127.0.0.1 abos gadījumos Bet kļūda klientam tāpat. Arī ja šādi client_socket.connect((host_ip, 9900)) Link to comment Share on other sites More sharing options...
camel Novembris 26, 2019 Share Novembris 26, 2019 Pie reizes pamēģini arī xmlrpc: server: from xmlrpc.server import SimpleXMLRPCServer from xmlrpc.server import SimpleXMLRPCRequestHandler # Restrict to a particular path. class RequestHandler(SimpleXMLRPCRequestHandler): rpc_paths = ('/RPC2',) # Create server with SimpleXMLRPCServer(('localhost', 8000), requestHandler=RequestHandler) as server: server.register_introspection_functions() def HelloFrom(name): print("Hello from " + name) return "OK" server.register_function(HelloFrom) server.serve_forever() client import xmlrpc.client s = xmlrpc.client.ServerProxy('http://localhost:8000') s.HelloFrom("Džeris") print(s.system.listMethods()) Link to comment Share on other sites More sharing options...
AndrisBB Novembris 26, 2019 Share Novembris 26, 2019 Nu tas jau XML bāzēts rcp. Maz ticams ka viņam tas vajadzīgs. pirms 5 stundām , Jurkins teica: ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it Pašā errorā jau tev ir dota atbilde, ar Pitina kodu tur sakars mazs. Skaties kas tev tajos portos sakonfigurēts, sistēma vienkarshi neatļauj piekonekteties portam. Pameģini ar netcat (vai kas tur uz Windows), ganjau būs līdzīgs rezultāts. netcat localhost 9900 Link to comment Share on other sites More sharing options...
MIGs Novembris 26, 2019 Share Novembris 26, 2019 (labots) Varbūt palīdz pašu konsoli palaist ar admina tiesībām un tikai tad startēt pitona kodu. Vēl protams AV/Firewall var bloķēt. Varbūt kaut kas jau sēž uz tā porta. Cits Pitonā process kas vienkārši nokāries fonā griežas. Restartēt datoru ?! Labots Novembris 26, 2019 - MIGs Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 (labots) Tā, nu ierados mājās. Bļin, uz mājas datora arī tas pats. Darbā, uz tā datora, uz kura negāja, skatījos ar netstat, nekas nesēž uz tā porta un netstats saka, ka ports tiek klausīts. Ja mēģināju slēgties klāt ar klientu no otra datora(uz kura viss gāja), tad netstats parādīja, ka savienojums ir izveidots, bet konsole neko nesaņēma. Pamēģināšu ar admin tiesībām. Darbā un mājās nekā līdzīga. w7 un w10. Nja, sākums grūts?. Kā vienmēr. edit: @camel piemērā serveris aiziet, klients izmet veselu sarkanu lappusi un beigās tas pats error10061. Labots Novembris 26, 2019 - Jurkins Link to comment Share on other sites More sharing options...
AndrisBB Novembris 26, 2019 Share Novembris 26, 2019 Pirms 10 minūtēm , Jurkins teica: ar klientu no otra datora Nu ja tu mēģini slēgties no otra datora un servers klausās uz localhost vai 127.0.0.1, tad loģiski ka neies. Klausies uz 0.0.0.0 (visiem intefeisiem) vai vēl labāk, nolasi visus interfeisus, dabon interfeisa IP un klausies uz tā. Tad no kliena taisi pieslēgumu uz to IP. Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 Nē, es izmainīju adresi uz to, kas datoram bija tīklā 10.10.1.2 konkrētajā gadījumā. Link to comment Share on other sites More sharing options...
AndrisBB Novembris 26, 2019 Share Novembris 26, 2019 (labots) Bet servers tak tev klausās uz localhost, pat ja tu mēģināsi pieslēgties ar servera IP, tikuntā neies. Liec serverī 0.0.0.0 vai interfeisa IP, un clientā servera IP. (tad redzēs vai iet). Vispār jau es ar Wirešarku paskatītos vai TCP savienojums tiek noraidīts no servera puses. Labots Novembris 26, 2019 - AndrisBB Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 Just now, AndrisBB teica: Bet servers tak tev klausās uz localhost Es maldos trijās priedēs.. gan serverim liku klausīties 10.10.1.2:9900, gan klients no otra kompja slēdzās pie 10.10.1.2:9900. Netstats rādīja, ka savienojums ar otru datoru ir ESTABLISHED, bet konsole to "hello"nesaņēma. Wirešarks vēl jāpagūst. Link to comment Share on other sites More sharing options...
AndrisBB Novembris 26, 2019 Share Novembris 26, 2019 Kas to lai zin kas tev tur par zvērudārzu, visādi Windows, firewalli un antivīrusi. Uzinstalē normālu OS un viss darbosies Pirms 9 minūtēm , Jurkins teica: Wirešarks vēl jāpagūst Tur nav ko apgūt. Pienstalē, taver interfeisu un redzēsi visu trafiku. Izfiltrē pec porta vai, lai liekais netraucē un redzēsi kas notiek. Link to comment Share on other sites More sharing options...
binary Novembris 26, 2019 Share Novembris 26, 2019 pirms 9 stundām , Jurkins teica: while True: connection, address = server_socket.accept() print("new connection from {address}".format(address=address)) print(str(connection.recv(1024))) Tev tur tai ciklā ir neriktīgs copy-paste vai kā? Tās "print" rindas ir ar atstarpi rindas sākumā vai bez? while True: connection, address = server_socket.accept() print("new connection from {address}".format(address=address)) print(str(connection.recv(1024))) Link to comment Share on other sites More sharing options...
AndrisBB Novembris 26, 2019 Share Novembris 26, 2019 (labots) Pirms 5 minūtēm , binary teica: Tev tur tai ciklā ir neriktīgs copy-paste vai kā? Tās "print" rindas ir ar atstarpi rindas sākumā vai bez? Nu ja viņam tur ir kā tavā pirmajā citātā, tad tā arī būs ka savienojumu izveidos, bet neko uz konsoli nedrukās. Pirms 16 minūtēm , Jurkins teica: Netstats rādīja, ka savienojums ar otru datoru ir ESTABLISHED, bet konsole to "hello"nesaņēma. Labots Novembris 26, 2019 - AndrisBB Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 Just now, binary teica: ir ar atstarpi rindas sākumā vai bez Paldies par norādi, bet tas ir ok. Pašā sākumā ar šo bija problēmas. Palaidu tādu appu TCP/IP Builder. Uztaisu soketu 127.0.0.1:9900 un palaižu uz klausīšanos. Palaižu pitona klientu un viss notiek. Netstats arī rāda, ka ir ok. Palaižu pitona serveri, no buildera konnektējos klāt un viss ok. Savā starpā abi nu ni. Link to comment Share on other sites More sharing options...
binary Novembris 26, 2019 Share Novembris 26, 2019 pirms 10 stundām , Jurkins teica: client_socket.close Šitam arī neaizmirsti pielikt "()" galā, nav jau Perl. Tiesa, tas konkrēto problēmu neatrisinās. Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 (labots) Sviests...? Sapratu, kāpēc uz cita datora gāja. Uz šamā stāvēja brīvā Visual Studio (izmantoju priekš Arduino, daudz patīkamāk nekā oriģinālais interfeiss) un tur bija arī paitona modulis vai kā to nosaukt. Uzrakstīju iekš VS un strādāja. Mājās arī ir līdzīga situācija. Uzveidoju uz VS17 un viss strādā. WTF??? Mēģināju py konsoli laist kā administrators, bet tas neko nelīdzēja. Gribētos tomēr saprast, kas par lietu. Serveris no VS, klients no py konsoles - OK. Serveris no py konsoles, klients no VS - OK. Serveris un klients no VS - OK Serveris un klients no py konsoles - pakaļa... Labots Novembris 26, 2019 - Jurkins Link to comment Share on other sites More sharing options...
AndrisBB Novembris 26, 2019 Share Novembris 26, 2019 Esi pārliecināts ka tabi bij salikti OK un kods nebij kā Binary teica? Ieposto neejošos failus, kā failus nevis copy/paste Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 TCP_client.py TCP_server.py No VS TCP_server_v1.py TCP_client_v1.py Porti atšķiras, bet kad laidu "krustām šķērsām",ad prtus ierakstīju vienādus. Link to comment Share on other sites More sharing options...
AndrisBB Novembris 26, 2019 Share Novembris 26, 2019 Faili izskatās vienādi Varbūt pitoni nav vieni un tie paši import sys print(sys.version) print(sys.version_info) print(sys.prefix) Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 (labots) Konsolē: >>> import sys >>> print(sys.version) 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] >>> print(sys.version_info) sys.version_info(major=3, minor=8, micro=0, releaselevel='final', serial=0) >>> print(sys.prefix) C:\Users\Jurchixx\AppData\Local\Programs\Python\Python38 >>> VS: >>> import sys >>> print(sys.version) 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] >>> print(sys.version_info) sys.version_info(major=3, minor=8, micro=0, releaselevel='final', serial=0) >>> print(sys.prefix) C:\Users\Jurchixx\AppData\Local\Programs\Python\Python38 >>> Pamēģināju vēlreiz... paC sev neticēju. Krustām šķērsām un VS viss lieliski, abi gali konsolē - čušss. To 3.8.0 ieliku šodien. Pirms tam bija 3.5 kaut kāds. Izrādās šis neraksta pa virsu vecajam. 3.8 ieinstalējās zem appdata/local..., vecais 3.5 bija programmās. Ar abiem pilnīgi tas pats stāsts. Domāju, varbūt kaut kas ar atļaujām... Labots Novembris 26, 2019 - Jurkins Link to comment Share on other sites More sharing options...
binary Novembris 26, 2019 Share Novembris 26, 2019 Kas ir "py konsole"? Kā no viņas to serveri un klientu palaist? Es palaižu no cmd. Link to comment Share on other sites More sharing options...
Jurkins Novembris 26, 2019 Author Share Novembris 26, 2019 (labots) IDLE Pyton Ieinstalējas tāda figņa ka tevi piķis! No cmd strādā. Skaidrs, aizmirstam to IDLE. Likās diezgan ērts redaktors. Paldies visiem! Problēma atrisināta. Nepagāja pat diennakts. ? Labots Novembris 26, 2019 - Jurkins Link to comment Share on other sites More sharing options...
AndrisBB Novembris 26, 2019 Share Novembris 26, 2019 Link to comment Share on other sites More sharing options...
binary Novembris 27, 2019 Share Novembris 27, 2019 pirms 7 stundām , Jurkins teica: Serveris no VS, klients no py konsoles - OK. Serveris no py konsoles, klients no VS - OK. Serveris un klients no VS - OK Serveris un klients no py konsoles - pakaļa... Man tomēr nav skaidrs, kāpēc tikai pēdējā kombinācija nestrādā. Link to comment Share on other sites More sharing options...
marrtins Novembris 27, 2019 Share Novembris 27, 2019 Viņš tur iekšēji neizmanto pats kaut kādus portus? Varbūt pārklājas kas. Pamēģini citus portus, 55555? Link to comment Share on other sites More sharing options...
Ronalds Novembris 27, 2019 Share Novembris 27, 2019 Windows firewall bija atslēgts? Link to comment Share on other sites More sharing options...
Jurkins Novembris 27, 2019 Author Share Novembris 27, 2019 (labots) Teiksim tā, par pitonu līdz aizvakardienai zināju tieši neko. Tikai to, ka interpretators apmēram kā beisiks Z80 laikos - ievadi komandu, nospied enter, šis šo izpilda. Ieinstalēju, skatos kaut kāds redaktors, IDLE python, nu i rakstu ar šamo. Vienalga kādus portus, Randomā mēģināju visvisādus. 55555 tikko izmēģināju. Tas pats. Mājās uz W10 no cmd viss strādā, no tās IDLEs clients nekādi. Sistēma normāla. Antivīrusa vispār nav bijis. Pēdējais vīruss bija nez cik gadus atpakaļ vēl uz W7. FW iebūvētais. Pie izslēgta tas pats. Tagad esmu pie darba datora, no cmd klients nestrādā, tā pati kļūida. Labots Novembris 27, 2019 - Jurkins Link to comment Share on other sites More sharing options...
binary Novembris 27, 2019 Share Novembris 27, 2019 (labots) Pirms 13 minūtēm , Jurkins teica: Teiksim tā, par pitonu līdz aizvakardienai zināju tieši neko. Tikai to, ka interpretators apmēram kā beisiks Z80 laikos - ievadi komandu, nospied enter, šis šo izpilda. Tik pat labi var teikt, ka PHP ir kā beisiks Z80 laikos. Tur ir tieši tas pats. Tā, starp citu - python prot arī "nokompilēt" savu .py failu un saglabāt savu "nokompilēto" bytecode .pyc failā, lai nav katru reizi jāinterpretē vienu un to pašu. Pirms 13 minūtēm , Jurkins teica: Tas pats. Mājās uz W10 no cmd viss strādā, no tās IDLEs clients nekādi. Rakstīji tak, ka viss OK, ja serveri palaiž no VS, bet klientu no IDLE. Labots Novembris 27, 2019 - binary Link to comment Share on other sites More sharing options...
Jurkins Novembris 27, 2019 Author Share Novembris 27, 2019 (labots) Tātad. Ātrumā bišķi saputrojos. Darbā tas pats, kas mājās. Laikam sapratu apmēram, kas notiek. Nestrādā abi gali no tās IDLEs. Nezinu, kā tas "process" notiek, bet izskatās, ka tā "čaula" vai kā to nosaukt nespēj strādāt vai ar diviem uzdevumiem vienlaicīgi. Labots Novembris 27, 2019 - Jurkins Link to comment Share on other sites More sharing options...
camel Novembris 27, 2019 Share Novembris 27, 2019 Jā problēma ir tajā idel. Tev vajag atvērt divus atsevišķus idle logus, vienā ielādēt serveri, otrā klientu, tad darbosies. Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!