PORFAVOR NECESITO AYUDA EN VERDAD PARA APROBAR MI CLASE...DIOS LES BENDIGA
ESTOY PROGRAMANANDO UN SERVER TIPO FTP...LO QUE NECESITO ES ENVIAR UN ARCHIVO DE TEXTO DEL CLIENTE AL SERVER HE AUI ALGUNOS PUNTOS Y EL CODIGO QUE YA TENGO...
CLIENTE...
Una vez seleccionado el archivo, el nombre del mismo debe ser enviado al servidor por
medio de un mensaje “ARCHIVO: <nombre del archivo>”.
Después de enviar el nombre del archivo, el cliente debe esperar un mensaje “OK” para
empezar a transmitir el archivo texto.
El archivo debe ser transmitido línea por línea.
Cuando se lea el fin de archivo, se debe enviar un mensaje “FIN” al servidor y debe
desplegar un mensaje “Archivo Transmitido Satisfactoriamente”.
Código:
Imports System.Net
Imports System.Net.Sockets
Imports System.IO
Public Class Form1
Dim clienteSocket As New System.Net.Sockets.TcpClient()
Dim serverStream As NetworkStream
Dim fs As FileStream = Nothing
Dim NombreArchivo As String
Public Sub txtConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtConectar.Click
Try
clienteSocket.Connect(txtIP_FTPServer.Text, txtPuerto_FTPServer.Text)
txtEstatus.Text = "Estatus : Connectado ..."
serverStream = clienteSocket.GetStream()
txtLog.Text = "" & "Conectado" & vbCrLf
Catch ex As Exception
txtEstatus.Text = "Error de conexión : " & ex.Message
End Try
End Sub
Private Sub txtBuscarArchivo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBuscarArchivo.Click
NombreArchivo = "c:\temp\" & txtfileName.Text & ".txt"
Try
OpenFileDialog1.ShowDialog()
NombreArchivo = OpenFileDialog1.FileName
txtfileName.Text = NombreArchivo
Catch ex As Exception
MsgBox("Error al crear/abrir archivo : " & NombreArchivo & " " & ex.Message) 'metodo indica q tipo de error es el que se encuentra
End Try
End Sub
Private Sub btnEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviar.Click ' enviar informacion
Dim nombre As String
nombre = Path.GetFileName(NombreArchivo)
Dim outStream As Byte() = System.Text.Encoding.ASCII.GetBytes("ARCHIVO: " & nombre) 'ESTE OBJETO SE NECESITA SIEMPRE
Dim buffSize As Integer ' PARA QUE EL SERVIDOR SEPA CUANTA INFO SE LE VA A ENVIAR
Dim inStream(10024) As Byte
Dim returndata As String = System.Text.Encoding.ASCII.GetString(inStream)
Try
'PARA ENVIARLE DATA AL SERVIDOR
serverStream.Write(outStream, 0, outStream.Length) ' PARA ENVIAR LA INFO...ARREGLO DE BYTES, DESDE DOMDE COMIENZA LA INFO, CUANTO LE ESTAMOS ENVIANDO
serverStream.Flush()
txtLog.Text = txtLog.Text & "Cliente dice >> " & "ARCHIVO: " & nombre
'Socket recibida del server
buffSize = clienteSocket.ReceiveBufferSize
serverStream.Read(inStream, 0, buffSize)
returndata = System.Text.Encoding.ASCII.GetString(inStream)
txtLog.Text = txtLog.Text & returndata & vbCrLf
txtEstatus.Text = "Socket desconectado"
Catch ex As Exception
txtEstatus.Text = "Error : " & ex.Message
End Try
End Sub
Private Sub btnDesconectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDesconectar.Click
serverStream.Dispose() ' CERRAR LA CONEXION
clienteSocket.Close()
End Sub
End Class
EL SERVIDOR..........
Después de aceptar la conexión del cliente, el servidor debe parsear el mensaje:
o Si el mensaje inicia con el substring “NOMBRE: “, debe leer el resto del string y
crear el archivo con el nombre recibido en el mensaje, luego enviar un mensaje
“OK” al cliente.
o Si el mensaje inicia con el substring “FIN”, el servidor debe cerrar el archivo que
creó.
o Si el mensaje no comienza con ninguna de las substrings anteriores, el servidor
debe grabar completamente el mensaje en el archivo de texto.
El servidor debe grabar el archivo en la carpeta c:\temp por default.
Imports System.Net
Imports System.Net.Sockets
Public Class Form1
Dim serverstream As NetworkStream
Dim server As TcpListener
Private Sub btnActivar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActivar.Click
Dim IPLocal As IPAddress = IPAddress.Parse(txtIP_FTPServer.Text)
Dim Puerto As Integer = Val(txtPuerto_FTPServer.Text)
Dim clienteSocket As TcpClient
server = New TcpListener(IPLocal, Puerto)
Try
txtLog.Text = "Chat Server activo ...." & vbCrLf
Application.DoEvents()
server.Start()
clienteSocket = server.AcceptTcpClient()
While (True)
Dim bytesFrom(10024) As Byte 'ARREGLO DE BYTES
Dim dataFromClient As String
'Socket recibido del cliente
Dim networkStream As NetworkStream = clienteSocket.GetStream()
networkStream.Read(bytesFrom, 0, CInt(clienteSocket.ReceiveBufferSize))
dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom) 'CONVERTIR EL ARREGLO DE BYTES Q VIENE A TYPO STRNG , EN CODIF ASSCI, TIPO TEXTO Y SE ASIGNA A DATAFROMCLIENTE
' dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$")) 'REMOVER EL SIMBOLO
Application.DoEvents()
txtLog.Text = txtLog.Text & "Cliente dice >> " & dataFromClient & vbCrLf
'Código que responde al cliente
Dim serverResponse As String = "Servidor dice >> ok"
Dim sendBytes As [Byte]() = System.Text.Encoding.ASCII.GetBytes(serverResponse)
networkStream.Write(sendBytes, 0, sendBytes.Length)
networkStream.Flush()
txtLog.Text = txtLog.Text & serverResponse & vbCrLf
Me.Refresh()
End While
Catch ex As Exception
MsgBox("Error " & ex.Message)
End Try
server.Stop()
End Sub
End Class