TCP/IP – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

TCP/IP – Python – Fórum – Programujte.comTCP/IP – Python – Fórum – Programujte.com

 

vojtano_k0
Návštěvník
3. 9. 2007   #1
-
0
-

Zdravím,
chtěl bych vás (někoho) poprosit o vysvětlení níže uvedeného programu. Jedná se o TCP/IP (sockety) komunikaci. Jo, funguje, dělá to to, co chci, ale já tomu prostě nerozumím. Mám doma referenční příručku, ale v té to nění nijak blíže vysvětleno. Mohl by mi to prosím někdo okomentovat? Děkuji mnohokráte, Vojtěch Kurka

Kód:

Server:



#!/usr/bin/python
# -*- coding: utf-8 -*-

import socket
import thread
import time
import message

LOCALHOST=''
DEFAULT_PORT=43210

def clientHandler(dataSocket):
try:
while 1:
data = message.receiveMessage(dataSocket)
print '\n\nprijato:', data
rdata = raw_input('zadej zpravu: ')
sent = message.sendMessage(dataSocket, rdata)
except:
pass


def startServer(port):
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverSocket.bind((LOCALHOST, port))
serverSocket.listen(1)

while 1:
clientSocket, clientAddress = serverSocket.accept()
print "spojeni prijato..."
thread.start_new_thread(clientHandler, (clientSocket,))


if __name__ == "__main__":
startServer(DEFAULT_PORT)


Klient:


#!/usr/bin/python
# -*- coding: utf-8 -*-

import socket
import thread
import time
import message


DEFAULT_PORT=43210
DEFAULT_HOST=raw_input('zadej adresu pocitace na kterem je server: ')

def client(dataSocket):
while 1:
outMsg = raw_input('zadej zpravu: ')
message.sendMessage(dataSocket, outMsg)
inMsg = message.receiveMessage(dataSocket)
print "\n\nprijato:", inMsg

def mainLoop(hostName, port):
dataSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
print 'pripojuji...'
dataSocket.connect((hostName, port))
print 'zacinam nove vlakno...'
thread.start_new_thread(client, (dataSocket,))
except:
print 'pripojeni selhalo...'
while 1:
time.sleep(1)



if __name__ == '__main__':
import sys
try:
outMsg = sys.argv[1]
except:
pass
mainLoop(DEFAULT_HOST, DEFAULT_PORT)


Message.py:


#!/usr/bin/python
# -*- coding: utf-8 -*-

def receiveMessage(dataSocket):
size = int(dataSocket.recv(4))
return dataSocket.recv(size)


def sendMessage(dataSocket, message):
size = len(message)
if size > 9999:
size = 9999
dataSocket.send(str(size).rjust(4))
return dataSocket.send(message[:size])

Nahlásit jako SPAM
IP: ...–
"Jen dvě věci jsou nekonečné. Vesmr a lidská hloupost. Ale tím prvním si nejsem jistý." - Einstein
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

TCP server, TCP klient v Linuxu — založil kocourOggy

TCP — založil Petr

Tcp/Ip C++ — založil Kenvelo

Multiplayer tcp/ip — založil Samuel Lehotský

TCp hlavicka — založil kuca

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý