PDA

Pogčedajte punu verziju : Slanje fajlova preko TCP/IP protokola


_Zeljko_
25. 04. 2006., 00:19
Volio bih ako neko moze da me uputi u najlaksi nacin slanja fajlova preko TCP/IP protokola? Konkretno sam gledao naredbu Sendbuf ali nisam uspio da ukapiram kako tacno radi, niti sta je potrebno da bi se realizovala u funkciji? Bilo kakav help bi mi mnogo znacio. Unaprijed hvala.

ivanhoe
25. 04. 2006., 01:19
FTP? :)

Da bi mogao da saljes nesto preko TCP-a, treba ti definisani protokol kako ce neko to sa druge strane da primi... Ako pises obe strane, i client i server, onda naprosto otvoris TCP socket i pises u njega na jednoj strani, a na drugoj citas, tu nema neke velike filozofije, obicna while petlja, pa zato cenim da tebi treba nesto komplikovanije?
U kom jeziku radis?

_Zeljko_
25. 04. 2006., 17:41
nazalost meni bas to treba ;) Nisam radio do sad sa Socketima.. Napravio sam client i server, medjutim nisam u stanju da pohvatam sta mi je sve potrebno da bih preko socketa poslao fajl serveru, tj klientu. Ako mozes da me uputis na neki info ili da mi pokazes na primjeru bio bih jako zahvalan ;) Unaprijed hvala od mene. Inace radim u Borlandu 6.

ivanhoe
25. 04. 2006., 19:01
uf, ja bas i nemam iskustva sa winsocketima, verovatno ovde to neko bolje zna, ali pretpostavljam da nema velike razlike u odnosu na unix, pa zato pogledaj ovo:
http://www.manualy.sk/sock-faq/

U principu treba da kreiras socket sa socket(), treba na serveru da se povezes na neki interfejs sa bind() i da pozoves listen() da bi slusao zahteve, treba na klijentu da pozoves connect() da bi se povezao na server, i onda na serveru uradis accept() da prihvatis vezu. Sad imas vezu. Koristi streaming sockets, to ti je TCP varijanta, i koristi blocking pristup. Nadalje samo upisujes podatke u socket na jednom kraju, i citas ih na drugom kraju, potpuno isto kao sto bi radio sa fajlovima . Jedina razlika kod socketa je sto ne postoji garancija da ce ti svi podaci upisani jednim write() stici tako da mozes da ih procitas jednim read()-om, znaci u tvom slucaju prenosa jednog fajla moras da pazis da citas sa socketa dok god ne dobijes EOF (zatvaranje socketa)