![]() |
Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Ich habe ein Chatprogramm für unser kleines Heimnetzwerk (Bestehend aus Computer und Notebook) geschrieben. Der Chatmodus ist fertig und ich bin sehr zufrieden damit :-D
Nun habe ich mir überlegt, dass es eigentlich nützlich wäre, einen Modus einzubauen, über den man mit dem andere Sprechen kann. Kann man das irgendwie hinbekommen, möglichst ohne die Datenmengen speziell irgendwo auf der Festplatte von einem der Rechner zwischenzuspeichern? Die selbe Frage gilt auch für Bilder. Danke schonmal! :stupid: |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
was hälst du von netmeeting? ist bei windows dabei;
|
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Nee, ich will's selbst machen.
|
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Ja das geht!
man muss das Bild bzw. die soundaufnahme in einem bzw in zwei streams verpacken diese beispielsweise per winsocket übertragen und dort wieder aus dem stream schreiben. Zum aufnehmen von sound nimm dir mal den mediaplayer aus der meist mitgelieferten bibliothek genauer unter die lupe. zur aufnahme von bildern solltest du selbst kreativ sein. und zum übersenden ganz einfach: hir e art pseudocode:
Delphi-Quellcode:
Nach nem bissel rumprobieren und anpassen sollte das dann eigentlich klappen.
//Zum versenden:
procedure übertragung; var Stream:Tstream; begin Stream:=Tstream.create; image1.Picture.Bitmap.SaveToStream(Stream); clientsocket1.Socket.SendStream(stream); //die Verbindung sollte schon hergestellt sein end; //Zum empfangen procedure onserversocket1.read; var stream:Tstream; begin stream:=Tstream.Create; image1.Picture.Bitmap.LoadFromStream(serversocket1.Socket.ReceiveBuf(stream,sizeof(serversocket1.Socket.ReceiveBuf))) end; [edit=sakura] [delphi]-Tags gesetzt. Mfg, sakura[/edit] |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Danke, super! Ich probier's mal aus!
(Geht das auch mit Sounds?) |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Hallo ihr,
meine Antwort in diesem Beitrag kommt vielleicht etwas spät, aber ich habe das gerade erst ausprobiert aber... Zitat:
Danke schon Mal Christian |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Die Antwort kommt nicht zu spät, aber dieser Satz kann garnicht in Ordnung sein, Image1 hat nichts mit Soundübertragung zu tun... :zwinker:
Ich bin leider mit der Fehlerbeseitigung noch nicht so weit, konnte es daher noch nicht ausprobieren, aber das klingt ganz gut. Wie gesagt oder besser geschrieben, es ist Zitat:
|
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Ja das Image keine Sound Objekt ist weiß ich ja :lol: des war ja nur zu probieren ob die verbindung auch etwas überträgt nur kann ich denn server gar nicht starten wenn der satz drin steht! :gruebel:
|
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Hi,
sry stand ich wohl a bissel neben mir der stream muss natürlich vorher noch auf null gesetzt werden
Delphi-Quellcode:
Probiers mal damit. p.s. du brauchst übrigens nur einen rechner um das zu testen schick es einfach an die eigene rechner-ip.
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket); var stream:Tstream; begin stream:=Tstream.Create; serversocket1.Socket.ReceiveBuf(stream,sizeof(stream));// Es könnte sein das du hinter socket noch ne Verbindungsnummer angeben //musst sollte dann Socket[0] sein ;) stream.Seek(0,0); image1.Picture.Bitmap.LoadFromStream(stream); end; ist für testzwecke wohl bei weitem weniger aufwand. p.s. ich habs mal in meinen Editor eingegeben [edit=sakura] [delphi]-Tags gesetzt. Mfg, sakura[/edit] |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
hmpf ich probiers mal kurz selber
ach mensch ich krieg die kriese mit den verflixten sockets am besten einfach mal rumprobieren aber es geht auf jedenfall |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Optimistisch bleiben! Ich werd's heute (16.01.04) mal auf einer Testform probieren. Ich werde es sicher schaffen, denn ich habe mir Delphi bis jetzt komplett selbst (durch Hilfedatei und !probieren!) beigebracht. Ich werd's dann mal posten!
|
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Gut, da habe ich wohl zu viel versprochen... :lol:
Ich werde mal im Internet nach einem Tutorial für sowas suchen, denn gebrauchen kann ich auf alle Fälle... |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Die Verbindung herstellen klappt soweit, nur habe ich Probleme bei SaveToStream.
|
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Liste der Anhänge anzeigen (Anzahl: 1)
Habe mich mal eurem Problem angenommen und n kleines Demoprogramm geschrieben!
Es versendet BMP über das Netz! Das Beispiel is universell, was bedeutet das man mit wenigen änderungen alle Arten von Dateien versenden kann! Was ich noch nicht realisiert habe, was aber sehr leicht selber machen könnt ist vielleicht noch ein eingebautes kompremierungstool, (vielleicht Zippen und BMP zu jpg) Wenn ihr das Bild aus der Image komp. in einen Stream packen wollt und nicht wie ich hier von Datei zu Stream, benutzt einen normalen Stream! Viel Erfolg noch! Wenn ihr noch Fragen habt , fragt einfach! Karneval steht vor der Tür :cheers: |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Ich muss nochmal stören:
Das ist toll von dir, Atwardz, aber eigentlich wollte ich's mit TWinSockets machen :( , damit ich es auch mit D6 Per bearbeiten kann. Ich bin jetzt soweit, das keine Fehlermeldungen mehr kommen:
Delphi-Quellcode:
Es kommt keine Fehlermeldung, es wird alles still abgearbeitet!
//Versenden:
var ST: TMemoryStream; begin ST := TMemoryStream.Create; try Start.Picture.Bitmap.SaveToStream(ST); if IsServer then SS.Socket.Connections[0].SendBuf(ST, ST.Size) else CS.Socket.SendBuf(ST, ST.Size); finally ST.Free; end; //Empfangen ins Client-/ServerSocket.(Client)Read var ST: TMemoryStream; begin ST := TMemoryStream.Create; try SS.Socket.Connections[0].ReceiveBuf(ST, Socket.ReceiveLength); ST.Seek(0, 0); Ziel.Picture.Bitmap.LoadFromStream(ST); finally ST.Free; end; Was ist der Fehler? |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Hi,
leider kann ich dir mit Winsocks nicht dienen! Was bring dich zu der Vermutung das Delphi 6 kein Indy unterstützt???????? Alle Delphi Versionen ab min. 3 unterstützen Indy, musst du dir halt nur saugen Hier ----> ![]() - Download 9.0.14 Source code distribution für Windows - Unzip es! - Je nachdem welches Delphi du hast führst du die dclIndyX0.dpk aus!Du hast Delphi 6 also die dclIndy60.dpk und drücks auf den Install Button! Viola Indy läuft unter Delphi 6! Hier der funktionierende Code für das versenden eines Bildes mit einem Memorystream!
Delphi-Quellcode:
Nun steht dir und Indy nichts mehr im Weg! Wenn du imernoch auf Winsocks besteht, die gegen quasi die Steinzeit symbolisieren wenn Indy unser Zeitalter ist, musst du leider jemand anderes Fragen weil es in Delphi 7 nur noch Indy gibt! Ich denke jeder hier im Forum wird dir aber zu Indy raten!
procedure TForm1.FormCreate(Sender: TObject);
begin Server.DefaultPort:=33333; Server.Active:=true; end; procedure TForm1.Button1Click(Sender: TObject); var ST: TMemoryStream; begin Client.Port:=33333; Client.Host:='192.168.2.103'; ST := TMemoryStream.Create; Start.Picture.Bitmap.SaveToStream(ST); with Client do begin try Connect; OpenWriteBuffer; try WriteStream(ST, true, true, 0); {das 2. true ist wichtig!, da es bewirkt, dass die Größe des Streams mittels WriteInteger zuerst verschickt wird} CloseWriteBuffer; except CancelWriteBuffer; raise; end; finally disconnect; ST.Free; end; end; end; procedure TForm1.ServerExecute(AThread: TIdPeerThread); var ST: TMemoryStream; SizeOfIncomingStream: integer; begin ST := TMemoryStream.Create; with AThread.Connection do begin try SizeOfIncomingStream := ReadInteger; ReadStream(ST,SizeOfIncomingStream); finally st.Position:=0; Ziel.Picture.Bitmap.LoadFromStream(ST); ST.Free; disconnect; end; end; end; Wenn du mit Indy weiterarbeites stehe ich für alle Fragen zur verfügung! @wardz! |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Hallo!
Zitat:
Dieser Hinweis ist meiner Meinung nach sinnvoll, denn wenn jemand über die Suche auf diesen Thread stößt, erhält er sonst falsche Informationen. Gruß Dietmar Brüggendiek |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Meine Fresse, da hasst dus mir jetzt ganz schön gegeben, ich hatte mich gerade mit den Winsockets angefreundet :cry:
Aber na gut, hört sich überzeugend an! Werd's mir mal anschauen! Danke! |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Ne, so war das nit gemeint aber ich versuche halt immer die Leute von Indy zu überzeugen, mich musste man damals auch mit Mühe überzeugen!
Für Indy-Fragen stehe ich immer bereit! @wardz |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Sorry, so ich hab' das'n Bisschen übertrieben, war nicht so gemeint...
Aber das ist so'n bisschen dasselbe, von der Benutzung(als Programmierer) her, ja? [Edit: Ich lasse mir immer dann etwas von Leuten sagen, wenn es sich überzeugend anhört; hinhören tue ich erst, wenn sie älter oder klüger sind... :wink: ] |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Habe jetzt folgendes Problem: Ich weiß nicht wie ich das alte Indy wegbekomme! Das Add|Remove Programm was dort erwähnt wird kenne ich nicht
|
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Du kannst die Indy komponenten wie jede andre Komponente entfernen!
- Componenten->Configure Palette...->Alle Indy komponenten hidden und dann die Ordner löschen - Componenten->Install Componente->remove die Indy komponete Weiss nit ob du schon ne Antwort gefunden hast, habe es trotzdem mal geschrieben! @wardz |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Ist ok, ich werd's mir mal angucken!
|
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Welche Komponenten müsste ich denn jetzt an stelle von meinen Winsockets nehmen?
|
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
IdTCPServer und IdTCPClient
Die findest du unter der Rubrik Indy Servers und Indy Clients als erste Kompo. |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Die sind da nicht, zumindest nicht bei der 9.0.14
[ :gruebel: Edit: *bange! :pale: ] |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Oh nein!!! Ich habe die Compos nochmal deinstalliert und jetzt bekomme ich sie nicht mehr in die Komponentenpalette!
bitte helft mir!!!!!!!!!!!!!! |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Neuer Status: Ich hab Indy9 mal mit zu 'nem Kumpel genommen (der hat die 6 Personal) bei ihm läuft's und ich habe gesehen, dass die Compos doch dabei sind, bei mir hatte ich die irgendwie übersehen, wahrscheinlich wegen dem TCP im Namen.
Aber bei mir wollen die einfach nichtmehr drauf! |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
guck mal unter Component/Palette, da kannst du die Kompos einblenden und ausblenden!
|
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Wie kann ich Text und bilder über diese Verbindung schicken, ohne dass sie sich in die Quere kommen. Also im ServerExecute überprüfen, ob nun Text ankommt oder ein Stream?
[Edit: Habe Edit1 entfernt, Texte verschicken müssen sie auch können (Sorry :lol: )] |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Oder anders: Wie kann ich rausfinden, welche Art von Daten (In diesem Fall String oder Stream) ankommt?
|
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Ich hab's jetzt mit zwei Servern/Client gemacht, über verschiedene Ports.
Das Componentenproblem ist auch behoben! Danke für eure Hilfe! |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Hallo @ All,
ich bin neu hier... ich bin gerade dabei ein programm zu erstellen welches ein Bild über Sockets versendet. Ich habe als erstes den Code von F.W. genommen...er meckert aber immer an der: if IsServer then stelle. Hat jemand eine ahnung was ich falsch mache? Oder habe ich eine einstellung nicht beachtet? MFG Martin |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Hi! Und willkommen in der DP! :cheers:
Ich habe seit diesem Beitrag nicht mehr mit Sockets gearbeitet! (Steigt auf Indy um, ist aktueller und einfach besser gemacht!) >> Wenn du willst, schreibe ich dir den Code auf Indy um, oder geb dir da 'n Beispiel. Das IsServer ist meine eigene Boolsche Variable, da bei mir die beiden Rechner, auf denen das Prog lief die selbe Exe hatten (es gab also kein Client im Clientprog auf Computer 1 und einen Server um Serverporg auf Computer 2), musste sich einer als Server betätigen, da ja eine Kommunikation zwischen Client und Client oder Server und Server nicht geht (glaub ich jedenfalls). Also schau mal was du für die Verbindung brauchst und wie du Kommunikation zwischen deinen Programmen organisierst und lass das IsServer einfach weg! Mehr kann ich dir leider nicht sagen, ist ja schon "ewig" her! Wie gesagt/geschrieben, schreib dir gern nen Code für Indy! Viel Glück noch! |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
VIelen Dank F.H.!
wäre schön wenn du das machst! :thumb: Einfach nur ein kleines BSP mit indy, so das ich das verstehe (ich meine ohne schnick schnack) :-D vilen Dank im vorraus Nepos |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
Zum verschicken von Bildern (BMP ist das TBitmap, das zu verschicken ist, bzw. das Objekt, in das es beim Empfangen geschrieben werden soll):
Delphi-Quellcode:
Wenn's Probleme gibt: Frag!
//Im IdTCPClient musst du vorher festlegen:
IdTCPClient.Host := 'EMPFÄNGER'; //IP-Addresse oder Computername (zumindest im lokalen Netzwerk) IdTCPClient.Port := 33333; //Zum Senden (von irgendwo ausgelöst): var St: TStream; begin St := TMemoryStream.Create; try BMP.SaveToStream(St); St.Seek(0, soFromBeginning); IdTCPClient.Connect; try IdTCPClient.WriteStream(St, True, true); { Wichtig! Der 3. Wert muss True sein, damit kommt am Server zuerst ein Integerwert an, in dem die Größe des Streams steht! } finally IdTCPClient.Disconnect; end; finally St.Free; end; end; //Und zum Empfangen(folgender Quelltext kommt ins IdTCPServer OnExecute): var I: Integer; St: TStream; begin St := TMemoryStream.Create; try with AThread.Connection do begin I := ReadInteger; ReadStream(St, I); { Tu was mit dem Stream Bsp: } St.Seek(0, soFromBeginning); BMP.LoadfromStream(St); end; finally St.Free; end; end; |
Re: Übertragung von Bildern und Sound im LAN mit 2 Rechnern
oops fallscher thread :(
sorry |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz