Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Finalmente la videochiamata!!!
Forum - Visual Basic 6 - Finalmente la videochiamata!!! - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:00
Sabato, 07/03/2009
eccomi qua' con un ritardo mostruoso.....
ho ripescato dal mio hd questo programma, non ho potuto riptovarlo perche' non possiedo piu' la webcam, pero' funzionava a suo tempo.....
l'invio dei file viene fatto in maniera molto semplicistica, in quanto i chunk vengono inviati in sequenza, senza attendere che dalla controparte arrivi il messaggio di chunk ricevuto e quindi la richiesta di invio del chunk sucessivo.....

io a suo tempo lo ho implementato su una chat, spero ti possa aiutare.....
ti scrivo il codice perche' non mi accetta l'allegato vuole winzip ed io non lo ho....

dalla parte di chi riceve (il server)
l'unica cosa da considerare e' che nella picturebox che crei devi impostare la proprieta' autoredraw = true
Codice sorgente - presumibilmente VB.NET

  1. Dim iData As String
  2.  
  3. Private Sub Form_Load()
  4. Form1.Visible = True
  5. Winsock.Listen
  6. End Sub
  7.  
  8. Private Sub Winsock_ConnectionRequest(ByVal requestID As Long)
  9. If Winsock.State <> sckClosed Then Winsock.Close
  10. Winsock.Accept requestID
  11. End Sub
  12.  
  13. Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
  14. Dim data As String
  15. Dim data2 As String
  16. Dim datafiler As String
  17. Winsock.GetData data
  18. If Split(data, "/-/")(1 - 1) = "file" Then
  19.      'Open App.Path & "\" & "\file ricevuti" & "\" & Split(data, "/-/")(2 - 1) For Binary As #1
  20.      'Put #1, , Split(data, "/-/")(4 - 1)
  21.      'Close (1)
  22.         If Split(data, "/-/")(2 - 1) = "titolo" Then
  23.            Open App.Path & "\" & Split(data, "/-/")(3 - 1) For Binary Access Write As #2
  24.         ElseIf Split(data, "/-/")(2 - 1) = "inizio" Then
  25.            datafiler = Split(data, "/-/")(3 - 1)
  26.            Put 2, , datafiler
  27.         ElseIf Split(data, "/-/")(2 - 1) = "fine" Then
  28.            Close #2
  29.            Image1.Picture = LoadPicture(App.Path & "\temp.bmp")
  30.         End If
  31.  End If
  32. End Sub



dalla parte di chi invia (il client)

Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2. Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  3. Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal WindowName As String, ByVal Style As Long, ByVal X As Long, ByVal Y As Long, ByVal Width As Long, ByVal Height As Long, ByVal Parent As Long, ByVal ID As Long) As Long
  4. Dim webcam As Long
  5. Dim webcamview As Boolean
  6. Dim tail As Long
  7. Dim file, data As String
  8. Dim chunk As Long
  9. Dim datafile As String
  10.  
  11. Private Sub Command1_Click()
  12.  Winsock2.Connect "127.0.0.1", 12666
  13. End Sub
  14.  
  15. Private Sub winsock2_Connect()
  16.   webcam = capCreateCaptureWindow("webcam", 0, 0, 0, 320, 240, Me.hwnd, 0)
  17.   DoEvents
  18.   Call SendMessage(webcam, 1034, 0, 0)
  19.   Timer1.Enabled = True
  20. End Sub
  21.  
  22. Private Sub Timer1_Timer()
  23.  On Error Resume Next
  24.  SendMessage webcam, 1084, 0, 0
  25.  SendMessage webcam, 1054, 0, 0
  26.  Picture1.Picture = Clipboard.GetData
  27.  Clipboard.Clear
  28.  Call Picture1.PaintPicture(Picture1.Picture, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight)
  29.  SavePicture Picture1.Image, App.Path & "\webcam" & "\temp.bmp"
  30.  On Error GoTo 1
  31.  file = App.Path & "\webcam" & "\temp.bmp"
  32.  Open file For Binary Access Read As #1
  33.  Winsock2.SendData "file/-/" & "titolo" & "/-/" & "\temp.bmp"
  34.   DoEvents
  35.   chunk = 4000 ' secondo i consgli di marcostraf non impostiamo ad'
  36.                ' 8000 i pacchetti potrebbero non arrivare'
  37.   Do While Not EOF(1)
  38.      datafile = Space$(chunk) ' mi vedo costretto ad usare la funzione space,
  39.                            ' attendo consigli su come poterla levare'
  40.      
  41.      Get 1, , datafile ' mi vedo costretto ad aggiungere una variabile , infatti
  42.                        ' get non accetta binari'
  43.      Winsock2.SendData "file/-/" & "inizio/-/" & datafile
  44.      DoEvents
  45.   Loop
  46.   Winsock2.SendData "file/-/" & "fine/-/"
  47.   Close #1
  48. 1: Exit Sub
  49. End Sub
  50.  
  51. Private Sub Winsock2_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
  52. MsgBox "problemi di connessione"
  53. Winsock2.Close
  54. Timer1.Enabled = False
  55. End Sub


Ultima modifica effettuata da il 07/03/2009 alle 17:07
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 21:17
Sabato, 07/03/2009
un ringraziamento a entrambi per aver postato le vostre soluzioni e averle condivise con gli altri utenti ;)

PM Quote
Avatar
acromangelo (Ex-Member)
Rookie


Messaggi: 25
Iscritto: 19/06/2008

Segnala al moderatore
Postato alle 20:58
Domenica, 08/03/2009
prego!

ora pubblicherò anche un altro progetto finito ^^

PM Quote
Avatar
Ahmadpour (Normal User)
Newbie


Messaggi: 1
Iscritto: 25/01/2012

Segnala al moderatore
Postato alle 22:26
Mercoledì, 25/01/2012
Ciao io ho 12 anni e vorrei imparare a fare un programma di videochat. Io per ora ho fatto solo un webbrowser.
Ciao e grazie

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo