Toon posts:

[VB] files via socket naar explorer zenden

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een programma in Visual basic gemaakt dat luistert op een bepaalde poort. Als ik via een http request connect met deze VB applicatie dan opent hij een socket connectie (request is http://mijnipnummer:poortnr).

Ik wil via deze connectie een flash movie versturen naar de explorer. Is dat mogelijk. Ik geloof dat ik binair files moet verzenden. Ik heb het bestand dat ik verzend opgedeelt in stukken , maar er komt algabra aan in mijn explorer.

Kan iemand mij vertellen hoe ik het moet doen, of waar ik dat kan vinden?
thx

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 15:14

johnwoo

3S-GTE

Je wilt dus een FTP server implementatie maken? (oversturen van de flash file)
Er zijn vast wel componentjes te vinden die al het werk voor je doen, maar als je het zelf via de socket wil doen, begin dan maar met het lezen van RFC 959: FTP protocol :)

Je zou het ook via HTTP kunnen doen: RFC 1945. Een goede beginners tutorial over het maken van een HTTP implementatie kun je hier vinden.

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


  • TheOneLLama
  • Registratie: Oktober 2000
  • Laatst online: 20-01-2022

TheOneLLama

A llama like no llama before

johnwoo schreef op 09 november 2002 @ 15:23:
Je wilt dus een FTP server implementatie maken :)
Er zijn vast wel componentjes te vinden die al het werk voor je doen, maar als je het zelf via de socket wil doen, begin dan maar met het lezen van RFC 959: FTP protocol :)
Ik raad je in ieder geval geen FTP implementatie te maken.. FTP is onnodig ingewikkeld.

Opera OpenOffice.org Jabber Psi jabber://llama@mordax.com


Verwijderd

Topicstarter
wat ik wil maken is eigenlijk een soort webservertje (miniwebservertje). VB applicatie krijgt een connectie request binnen en stuurt een pagina (met flash movie) naar de persoon zijn explorer die de URL request heeft verzonden. Kan ik via het ftp verhaal hetzelfde bereiken? Volgens mij niet he. Kan ik via het ftp verhaal op een andere poort reageren dan 21? etc. Dit is denk ik niet wat ik wil.

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 15:14

johnwoo

3S-GTE

TheOneLLama schreef op 09 November 2002 @ 15:24:
[...]


Ik raad je in ieder geval geen FTP implementatie te maken.. FTP is onnodig ingewikkeld.
Hij wil de file blijkbaar in explorer kunnen ontvangen, dus het zal dan toch FTP of HTTP moeten zijn.
wat ik wil maken is eigenlijk een soort webservertje (miniwebservertje). VB applicatie krijgt een connectie request binnen en stuurt een pagina (met flash movie) naar de persoon zijn explorer die de URL request heeft verzonden. Kan ik via het ftp verhaal hetzelfde bereiken? Volgens mij niet he. Kan ik via het ftp verhaal op een andere poort reageren dan 21? etc. Dit is denk ik niet wat ik wil.
Je wil dat de flash movie dus meteen automagisch gespeeld wordt? In dat geval moet je inderdaad HTTP gebruiken. Als je met explorer via FTP zo'n flash file opvraagt, krijg je een "Save File As" venstertje. Nogmaals: hier staat een heel goede en begrijpbare inleiding over het schrijven van HTTP clients en servers. Begin daar maar eens mee :)

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Topicstarter
Hier heb ik al meer aan. Ik zie nou wat ik aan text terug moet sturen. Nou blijft het probleem van de file (flash.swf) over......

ja inderdaad ik wil dat de flash movie meteen gespeeld wordt. Gewoon precies hetzelfde als wanneer je elke andere webpagina in explorer opent van een webserver. De connectie tussen VB en explorer is er al. De vraag is dus: Hoe kan ik via die socket connectie de file verzenden naar de explorer die de request heeft verstuurd?

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 15:14

johnwoo

3S-GTE

Verwijderd schreef op 09 november 2002 @ 15:31:
Hier heb ik al meer aan. Ik zie nou wat ik aan text terug moet sturen. Nou blijft het probleem van de file (flash.swf) over......

ja inderdaad ik wil dat de flash movie meteen gespeeld wordt. Gewoon precies hetzelfde als wanneer je elke andere webpagina in explorer opent van een webserver. De connectie tussen VB en explorer is er al. De vrijg is dus: Hoe kan ik via die socket connectie de file verzenden naar de explorer die de request heeft verstuurd?
Lees die tutorial en alles zal je duidelijk worden :)

Om het even kort samen te vatten; nadat explorer heeft geconnect met je VB applicatie, wacht je eerst op zijn request, en als hij je flash movie opvraagt (of als je programma geen andere files hoeft te versturen kan je die flash movie ook gewoon altijd terug sturen), moet je het volgende terugsturen (over dezelfde verbinding):

code:
1
2
3
4
5
6
HTTP/1.0 200 OK
Server: MyProgram/1.0
Content-type: binary/flash
Content-length: 335676

[hier de binary file data]

Vervolgens sluit je de verbinding.
Ik weet niet precies wat het MIME type is van een flash movie (de Content-type header dus), ik heb er maar binary van gemaakt als hoofdtype. Ook geef je de lengte van je file mee. Dit hoef je niet per se te doen, maar op deze manier kan explorer bepalen of hij wel alle bytes heeft binnengekregen als je de verbinding sluit.

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Topicstarter
Bedankt, ik ga het meteen uitproberen (ik hoop dat het werkt)

  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Het MIME-TYPE van Flash is volgens mij:

application/x-shockwave-flash


Maar als je toch al een HTTP connectie hebt, bak er dan meteen een HTML pagina van (net zoals Flash al voor je kan maken) ... dan kun je ook opties als 'autoplay', etc. meegeven ! Of is dat niet de bedoeling ? FF goed zoeken moet makkelijk voorbeeld code kunnen opleveren ... succes !

'Political Correctness is fascism pretending to be good manners.' - George Carlin


Verwijderd

Topicstarter
Het wil toch niet helemaal werken. Na het verzenden naar explorer via de socket, laad de flash movie niet in. Als ik naar de html code kijk die aangekomen is, dan ziet alles er goed uit behalve daar waar de flash movie in moet komen. Hier staat een hele lijst met dit soort codes: U–~€ÿ’Îÿ`š #? Ik heb het gevoel dat explorer de file die ik binary verzend niet goed weer aan elkaar plakt. Maybe verwacht hij een sluit tag ?!? Iemand een idee wat er fout gaat?

De vraag is dus: Hoe zet internet explorer de bestanden die hij ontvangt weer in elkaar? En hoe moet ik ze dus verzenden?

(zijn eigenlijk 2 vragen hehe :) :)

Verwijderd

Topicstarter
Niemand die mij verder kan helpen? Ik heb al geruime tijd gezocht maar ik kom er echt niet uit!!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:19
Je bent VB programmeur dus ik vraag 't maar even (NOFI): stuur je je data wel binarysafe over? Wat gebeurd er als er 0-bytes in de invoer zitten? Gebruik je wel \r\n als newline character bij het versturen van je headers? (Dat is dus ASCII code 13 en 10.)

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 15:14

johnwoo

3S-GTE

Heb je die HTTP tutorial al gelezen? Dan had je geweten dat iedere resource (iedere file in een HTML pagina dus) apart wordt binnengehengeld. Door een socket stuur je dus de HTML file door, en de flash movie gaat door een andere.
Als jij in explorer http://localhost intypt (aangenomen dat je je proggel op je eigen PC hebt draaien ;) ), dan opent hij eerst een verbinding en vraagt de resource "/" aan. Als je dit ontvangt stuur je dus je HTML pagina terug, waarin wordt gerefereerd naar de flash movie. Om deze binnen te halen opent explorer nog een connectie, waarin hij de flash movie aanvraagt (wat je binnenkrijgt in je request hangt dus af hoe je die flash movie in je HTML pagina noemt). Probeer het anders eerst met alleen de flash movie; dan heb je aan 1 connectie genoeg. Gewoon precies doen zoals ik het hierboven ergens tussen code tags heb gezet, en alleen maar de inhoud van de .swf file doorsturen. Geen HTML erbij; je kunt geen MIME types mixen in 1 resource.

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Topicstarter
Klopt inderdaad, ik krijg na het sturen van de hmtl en de flash movie(binary) nog een request binnen met de movie naam. Kan ik dan dezelfde socket connectie gebruiken om die flash file er achteraan te sturen?

Verwijderd

Topicstarter
Ik heb nou precies gedaan wat je hebt gezegt (tussen code)

Hij is nu aan het verzenden. En ik zie dat hij alles heeft verzonden (msgbox sendbytes) maar in explorer verschijnt een wit scherm. Wel is het zo dat als ik op de rechter muis knop klik op de witte pagina, hij laat zien dat er een flash object zou moeten staan. Er staat movie not loaded (disabled) en About macromedia flash player. Dus hij weet wel dat er een flash movie zou moeten staan. Nog ideeen? (ps sorry voor eventueele domme vragen, maar ik heb dit nog nooit gedaan)

ps Het lijkt er op alsof internet explorer blijft laden. (en ja ik gebruik ook chr10 en 13)

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 15:14

johnwoo

3S-GTE

Als hij blijft laden is dat waarschijnlijk omdat je je HTTP/1.0 verbinding niet sluit...
Ik heb ondertussen een klein voorbeeldje gemaakt: een mini-webservertje :P
Download hier. Hopelijk wordt het er iets duidelijker door :)

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Topicstarter
Harstikke bedankt!!! Ik ga hier eens mee aan de slag. thx voor de moeite!

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Eventueel kan je ook op www.vbip.com kijken, VB Internet Programming, staat vast wel wat handigs tussen ;)

Verwijderd

Topicstarter
Alles werkt perfect. Maar ik heb toch nog 1 klein vraagje. Kan het zijn dat Netscape anders werkt? Als ik namelijk de html code verstuur waarin de flash movie wordt geladen dan opent internet explorer een nieuwe thread waarop die vraagt naar de movie. Maar ik heb het zojuist met nestscape geprobeerd maar die is niet van plan te een nieuwe thread te openen om naar de movie te vragen.

Enig idee?
Pagina: 1