Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Jubjub

#321
Antes de poder empezar a hacer conexiones entre ordenadores utilizando bases de datos, deberias de leer algo sobre el control Winsock del VB, aqui mismo, en el foro hay unos cuantos tutoriales muy buenos. Por ejemplo, aquí.
#322
Estoy haciendo una aplicacion con Sockets (basada en el Tutorial de Sockets de Hendriҳ), pero con la diferencia de que yo lo he intentado hacer con formularios, y he tenido dos problemas.

1.-Al darle al boton de escuchar, el programa se cuelga. Le envio mensajes por el Netcat y no responde, pero al enviarle el comando EXIT, que cierra la conexion interrumpiendo el bucle do, el programa se "descuelga" y puedo ver todo lo que le he enviado, la pregunta es si se puede conseguir hacerlo de otra forma para que no se cuelgue.   :( (Con consola va perfeco)

2.-El texto que aparece en el textbox "llegada" aparece demasiado seguido, le he añadido un TAB porque no se cual es la forma de indicar un salto de linea.
  :-(

Aquí esta el código:

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;

namespace Hola_Netcat_
{

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {


        }

        private void button1_Click(object sender, EventArgs e)
        {

                       IPAddress direc = Dns.GetHostEntry("localhost").AddressList[0];
            IPEndPoint Ep = new IPEndPoint(direc, 1235);
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket.Bind(Ep);
            socket.Listen(100);
            Socket handler = socket.Accept();

            byte[] bytes = new byte[1024]; //Declaramos un array de bytes de longitud 1024
            int count;
            String data = ""; //Declaramos data, que sera donde se guarde lo que recibamos
            string limp = ""; //Declaramos limp, donde se almacenara data sin salto de linea
            int longi ; //Declaramos longi, donde se almacenara la longitud de data

            do //Bucle Do/While
            {
                count = handler.Receive(bytes); //Recibimos los datos enviados y lo guardamos en cout.
                data = System.Text.Encoding.ASCII.GetString(bytes, 0, count); //Lo codificamos a cadena (ya que se envian como bytes)
                if (data != "salir\n") //Mientras lo recibido no sea exit + intro
                {
                    longi = data.Length - 1;
                    limp = data.Remove(longi, 1);

                    llegada.Text = llegada.Text + "Informacion recibida:" + limp + "  "; //Mostramos lo recibido con el textbox "llegada"
                }
               
               
            } while (data != "exit\n");  //Mientras lo recibido no sea exit + Intro se continua el bucle, si recibimos exit + intro, salimos del bucle

            llegada.Text =  llegada.Text + "Se ha finalizado la conexión"; //Avisamos qde que se a terminado la transferencia de datos

            byte[] msg = System.Text.Encoding.ASCII.GetBytes("\n\nFinalizada conexion con la aplicacion"); //Codificamos de string a byte

            handler.Send(msg); //Enviamos el mensage al cliente
            handler.Shutdown(SocketShutdown.Both); //"Apagamos" los sockets
            handler.Close(); //Los cerramos

        }

        private void timer1_Tick(object sender, EventArgs e)
        {

        }
}

       
                           
               
       

        }
   



Muchas gracias al que me ayude.  ;)