Hola amigos, les queria preguntar una duda, estoy haciendo un troyano y lo tenía hecho con la libreria winsock pero como quiero prescindir de esta libreria, me puse a buscar un clon de ella, y encontre CSocketMaster, todo el troyano funciona muy bien con CSocketMaster menos la de transferir un archivo, y es que con Winsock el servidor transfería todo el archivo entero, y el cliente lo iba recibiendo de a poco, de este modo:
Public Sub Enviar_Componente(Index As Integer)
Dim tamaño As Long
'abrimos el archivo en modo binario de lectura
Open App.Path & "\DIjpg.dll" For Binary Access Read As #1
tamaño = LOF(1) 'Tamaño en bytes de la imagen
'Redimensionamos el Array
ReDim imagen(tamaño - 1)
'Leemos todo el archivo y lo almacenamos en el array imagen
Get #1, , imagen
Close
'Enviamos el array al cliente
frmMain.Winsock2(Index).SendData imagen
frmMain.ProgressBar1.Max = tamaño + 1
frmMain.ProgressBar1.Visible = True
End Sub
Después la progressBar va aumentando en el evento SendProgress.
Private Sub Winsock2_SendProgress(Index As Integer, ByVal bytesSent As Long, ByVal bytesRemaining As Long)
If progreso = True Then
ProgressBar1 = ProgressBar1 + bytesSent ' bytesSent son los bytes enviados
End If
End Sub
Y el cliente lo recibe de este modo:
Dim Archivo() As Byte
'Aumentamos sizeFileRecibido con los datos que van llegando
sizeFileRecibido = sizeFileRecibido + bytesTotal
'Recibimos los datos y lo almacenamos en el array de bytes
Winsock1.GetData Archivo
'Escribimos en disco el array de bytes, es decir lo que va llegando
Put #1, , Archivo
' Si lo recibido es mayor o igual al tamaño entonces se terminó y cerramos
'el archivo abierto
If sizeFileRecibido >= sizeFile Then 'SizeFile contiene el tamaño en bytes del archivo que se esta recibiendo
'Cerramos el archivo
Close #1
sizeFileRecibido = 0
End If
Esto funciona perfectamente con Winsock, pero no así con CSocketMaster. En las normas dice que uno se limite a decir que lo que pasa, sin dar opiniones de cual cree uno que es el problema, pero si me lo permiten, creo que el problema pasa porque CSocketMaster intenta enviar todo el archivo de una, y el resultado es que envía solo 8kb aprox del total del archivo, el Winsock, en cambio, lo va enviando de a partes, de esto me doy cuenta porque el evento Data_Arrival es llamado una y otra vez con la Winsock.ocx, y en el CSocketMaster solo es llamado una vez, escribe 8kbs aprox. y nunca más sucede nada más.
Estoy casi seguro que ese es el problema, pero no tengo idea de como tengo que hacer para solucionarlo ¿Alguna ayuda?
Quizás puedan recomendarme alguna otra class para imitar al Winsock que no sea CSocket...