| 
	
		|  Autor | Tema: transferencia de archivos x winsock  (Leído 2,826 veces) |  
	| 
			| 
					
						| elmaro 
								 
								
								 Desconectado 
								Mensajes: 301
								
								 
								Unas simples palabras...
								
								
								
								
								
								   | 
 
hola que tal,. tengo un severo problema ya ace tiempo en mi programa no apuedo implementar la transferencia de archivos mediante winsock,. eh probado muchos codigos,. de este foro, de los que encontre x la web, y modificaciones mias,. pero nada,. no funcionan,. se pierden dato,. no manda archivos grandes ni nada,. si alguien me paudiera dar un codigo que garantize la transferencia mediante winsok se lo agradeceria mauchisimo saludos  pd: pronto postiare una pregunta con respecto al NO-IP y las notificaciones,.   El MaRo! 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| NYlOn 
								 
								
								 Desconectado 
								Mensajes: 842
								
								 
								OOOOHHHHHH, TARAGÜIIII       xDDDDDD
								
								
								
								
								
								     | 
 
Bueno hice esta funcion hace un tiempo, pero creo que sigue funcionando xD. Sos libre de hacer las modificaciones que quieras. Espero que te sea util. La siguiente funcion sirve para ENVIAR ARCHIVOS : 'La funcion va a indicar si se produjo algun error (si devuelve True es que se envio correctamente)
 Private Function EnviarArchivo(Archivo As String, Ruta As String, Buffer As Long, Winsock As Winsock) As Boolean 'Archivo es el archivo que vamos a enviar y Ruta es el lugar donde los va a guardar el servidor
 
 Dim Todo As String
 Dim Tamaño As Long
 Dim i As Integer
 
 On Error GoTo Error
 
 Open Archivo For Binary As #1 'Abrimos el archivo que vamos a enviar de forma binaria
 Tamaño = LOF(1) 'Obtenemos el tamaño del archivo a enviar
 Todo = Input(LOF(1), 1) 'Almacenamos el codigo binario del archivo en una variable
 Close #1
 
 'Enviamos los datos del archivo (Tamaño, Ruta, Nombre)
 Winsock.SendData "Dat" & "*" & Tamaño & "*" & Ruta
 
 Pausa 0.5 'hacemos una pequeña pausa para dar tiempo a que lleguen los datos
 
 'Ahora enviamos el archivo por partes
 For i = 1 To Len(Todo)
 
 If i <> 1 Then 'una vez q se envia la primera parte
 i = i + Buffer - 1 'empezamos a sumar el Buffer
 End If
 
 Winsock.SendData Mid(Todo, i, Buffer) 'enviamos desde donde kedamos (i) hasta la cantidad indicada (Buffer)
 
 Pausa 0.3 'hacemos otra pausa
 
 If i > Len(Todo) Then ' si (i) supera la longitud del archivo
 MsgBox "El archivo se envio staisfactoriamente.", vbInformation, "NYlOn" 'inidicamos q se envio el archivo
 Winsock.SendData "END" 'le avisamos al servidor que cierre el archivo
 End If
 Next i
 
 EnviarArchivo = True
 Exit Function
 
 Error:
 EnviarArchivo = False
 End Function
 
 'Esto genera una pausa en el programa
 Public Sub Pausa(Segundos As Single)
 Dim ComienzoSeg As Single
 Dim FinSeg As Single
 
 ComienzoSeg = Timer
 FinSeg = ComienzoSeg + Segundos
 
 Do While FinSeg > Timer
 DoEvents
 If ComienzoSeg > Timer Then
 FinSeg = FinSeg - 24 * 60 * 60
 End If
 Loop
 End Sub
 
Se utiliza: EnviarArchivo "C:\MiArchivo.jpg", "C:\RutaFinal\Archivo.jpg", 600, Winsock1
Y en el evento DataArrival del Winsock que resive el archivo, va este codigo: Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim Code, Datos() As String
 On Error GoTo Cerrar
 
 Winsock1.GetData Code
 
 Select Case Left(Code, 3)
 Case "Dat" ' Si son los datos del archivo
 Datos = Split(Code, "*") ' los separamos por "*"
 Open Datos(2) For Binary As #1 'abrimos el archivo indicado para luego ir introduciendo los datos
 
 Case "END" 'esto nos indica que cerremos el archivo (cuando termina de enviarse)
 Close #1 'lo cerramos xD
 
 Case Else 'si no fue ninguna de las otras instrucciones
 Put #1, , Code 'es pq son datos del archivo. Los almacenamos
 End Select
 
 Exit Sub
 Cerrar:
 Close #1 'esto es porque, si ocurre algun error, el archivo queda abierto y no se puede eliminar
 End Sub
 
El codigo esta testeado y funciona, pero aun asi nunca sabes donde puede saltar un problema... Asique si pasa algo, postea =) Saludos.-
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| sebas369 
								
								 Desconectado 
								Mensajes: 31
								
								 
								Professional VB Programer
								
								
								
								
								
								     | 
 
y para transmitir voz por winsock no hay nada ?     , no pude conseguir en planet source code , esta todo en ingles, y busque y aparecen cosas de skype pero q no sirven , algun codigo directo para poner ? es muy rata q grabe y mande el archivo xD |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| NYlOn 
								 
								
								 Desconectado 
								Mensajes: 842
								
								 
								OOOOHHHHHH, TARAGÜIIII       xDDDDDD
								
								
								
								
								
								     | 
 
Ahi dice que sos Professional VB Programer  xDDD Mira, enviar voz por un winsock no es algo que abunde por internet, asique es poco problable que encuentres un "codigo directo para poner". Te recomiendo que busques info sobre como captar voz y luego, segun la forma en que la captes, idees alguna forma para mandarla por ws y luego reproducirla. Saludos.- |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| elmaro 
								 
								
								 Desconectado 
								Mensajes: 301
								
								 
								Unas simples palabras...
								
								
								
								
								
								   | 
 
hola NYlOn  ,. bueno te quiero dar las gracias de ante mano,. aunke todavia no probe la foncion esa,. la estuve mirando y parece que va a funcionar,. yo abia echo algo parecido., aasi era mayor a 1000caracteres los mandava todos juntos y si no...los separaba en pedasos de 1000 y luego amndaba los restos...pero tenia problemas con los restos :S en cuanto prueve tu funcion te digo que tal me fue,. gracias   El MaRo! |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| LeandroA | 
 
y para transmitir voz por winsock no hay nada ?     , no pude conseguir en planet source code , esta todo en ingles, y busque y aparecen cosas de skype pero q no sirven , algun codigo directo para poner ? es muy rata q grabe y mande el archivo xDHola te paso un chat que hice que puedes tranmitir la vos, si bien como vos decis es muy rata que grabe y mande el archivo es vastante eficiente, lo digo porque de echo encontre otra forma que eniva de una manera mucho mas profesional (muy bueno por cierto) pero tenia ciertos problemas y tirava un error (nose quizas en red no lo aria pero porlomenos en una misma pc si )(el error era espacio de cola insuficiente  en un doevents) el chat mio http://ar.geocities.com/leandroascierto/Chat.zip y el otro que te decia http://ar.geocities.com/leandroascierto/EnviarAudio.zip miralos a ambos  |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| sebas369 
								
								 Desconectado 
								Mensajes: 31
								
								 
								Professional VB Programer
								
								
								
								
								
								     | 
 
gracias capo , miro nomas     ,y professional vb programmer lo puse al re pedo xD , empese hace menos de 3 meses a programar    , y no entiendo mucho,pero algunas cosas salen   saludos |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
   |