Welcome to WindowsClient.net | My Blog | Sign in | Join

Using System.Linkecubeko

Blog de programacion de la plataforma .NET

WinSock en C#, Aplicación Cliente-Servidor

Etiquetas de Technorati: ,

Hola, ya tenia mucho tiempo sin publicar nada pero la mezcla del trabajo y la escuela esta algo complicada.

Bueno hoy le traigo un ejemplo de cómo utilizar los WinSock en c# con Visual Studio en las versiones 2005 y 2008.

Este tema que me parece muy interesante aunque es algo avanzado aun cuando no son muchas líneas código, pero tratare de explicar antes la tecnología aplicada a este ejemplo.

Para este ejemplo usamos el Winsock para establecer una conexión entre el cliente y el servidor. Esto es lo que se usa en todas las computadores hoy en día. La red es una herramienta esencial y muy importante para los programadores y se debe aprender a utilizarla.

Es este articulo veremos un sencillo programa de chat, el cual consistirá en una aplicación que será el servidor y otra el cliente que se puede conectar directamente desde Internet o desde una LAN para simplemente intercambiar mensajes de texto.

Control Winsock en C#

El manejo de sockets es complejo realizando todo el trabajo desde cero, porque se tienen que controlar diversos factores como crear encabezados, tamaños de paquetes, tablas de hash, manejo de hilos y muchas mas cosas pero con el control Winsock nos evitaremos todo ese problema, este control es un componente COM y lo podemos añadir a nuestro programa en c# (o cualquier otro lenguaje por ser COM) de una manera muy fácil esto se vera en la construcción del ejemplo.

Que se necesita para este ejemplo???

Se necesita una computadora con Windows, y tener instalado Visual Studio en cualquiera de sus versiones de 2005 o 2008.

Ejemplo:

Bueno aquí empieza lo chido, el código.

Cliente

Lo primero que aremos será construir la aplicación cliente pare ello abriremos una instancia de Visual Studio y crearemos un nuevo proyecto del tipo WindowsApplication y la diseñaremos mas o menos así.

WinsockCliente

Después el la caja e herramientas demos clic con el botón derecho y seleccionamos choose Items como se muestra en la imagen.

clip_image004

Se nos desplegara una ventana para elegir el control que ocuparemos para el ejemplo que es el Microsoft WinSock Control, versión 6.0

clip_image006

Lo seleccionamos y damos OK y este control nos aparecerá en caja de herramientas del Visual Studio como se muestra en la imagen.

clip_image008

Luego arrastramos el control a la forma y así lo tendríamos agregado en nuestra aplicación.

Esta es la imagen del control en la forma, se ve así ya que es un control que no es visible en la ejecución pero como es COM no se pone en la parte de abajo como los otros controles no visibles de visual Studio.

clip_image009

Una vez diseñada la forma se le introduce el siguiente código.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinSockClient
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// se le agregan los eventos necesarios al
//control axWinsock1
this.axWinsock1.Error += new AxMSWinsockLib.
DMSWinsockControlEvents_ErrorEventHandler
(this.axWinsock1_Error);

this.axWinsock1.ConnectEvent +=
new System.EventHandler
(this.axWinsock1_ConnectEvent);
this.axWinsock1.DataArrival +=
new AxMSWinsockLib.
DMSWinsockControlEvents_DataArrivalEventHandler
(this.axWinsock1_DataArrival);

}

//variable para tener un control del estado de
//conexion entre el cliente y el servidor
bool isConnected = false;

private void btnConectar_Click(object sender,EventArgs e)
{
//si esta conectado se cierra y si no se abre
//la conexion
if(isConnected == false)
{
try
{
//se cierra el winsock si esta abierto.
axWinsock1.Close();
//se llama al método connect del winsock
//que pide una IP y un puerto a cual conectarse
axWinsock1.Connect(IPTxt.Text, PuertoText.Text);
isConnected = true;
labelEstado.Text = "Conectado por
el puerto: " + PuertoText.Text;
labelEstado.ForeColor = Color.Green;
btnConectar.Text = "Desconectar";
}
// con un bloque try-catch se cacha
//cualquier error y lo muestra en el log
catch (System.Windows.Forms.AxHost.InvalidActiveXStateException g)
{
ListBoxLog.Items.Add(g.ToString());
}
catch (Exception ex)
{
ListBoxLog.Items.Add(ex.Message);
}
}
else
{
try
{
//Esto cierra la conexion con el cliente
axWinsock1.Close();
this.ListBoxLog.Items.Add("Desconectado...");
btnConectar.Text = "Conectar";
labelEstado.ForeColor = Color.Red;
labelEstado.Text = "Desconectado";
isConnected = false;
}
catch
{
MessageBox.Show("Ocurrió un error,
el puerto no esta abierto",
"ERROR",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}

private void btnEnviar_Click(object sender,EventArgs e)
{
try
{
//si esta conectado puede enviar información
if(isConnected)
{
//esto se envía la información que tenga
//textbox txtMsg hacia el servidor
axWinsock1.SendData(txtMsg.Text);
//con esto visualizamos en pantalla
//el mensaje que se acaba de enviar
ListBoxLog.Items.Add("Cliente- "
+ axWinsock1.LocalIP
+ ": " + txtMsg.Text);

//borramos el contenido del texbox para
//dejarlo listo para mandar un nuevo mensaje
txtMsg.Text = "";
}
else
MessageBox.Show("No se esta conectado con el servidor");
}
// con un bloque try-catch se cacha
//cualquier error y lo muestra en el log
catch (AxMSWinsockLib.AxWinsock.InvalidActiveXStateException g)
{
ListBoxLog.Items.Add(g.ToString());
}
catch (Exception ex)
{
ListBoxLog.Items.Add(ex.Message);
}
}

//en caso de algún error puramente del winsock
//se activa este evento y se escribe en el log
//la información del error
void axWinsock1_Error(object sender,
AxMSWinsockLib.DMSWinsockControlEvents_ErrorEvent e)
{
ListBoxLog.Items.Add("Error : " + e.description);
isConnected = false;
}

// Este evento se activa cuando el servidor envía
//y el winsock del cliente atrapa esa información
private void axWinsock1_DataArrival(object sender,
AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent e)
{
//creamos una variable para obtener
//los datos que llegaron
string data = "";
//creamos otra variable tipo object
//porque el método que se utiliza para
//recibir datos es object
object dat = (object)data;
//obtenemos la información que envió
//el servidor en forma de object
axWinsock1.GetData(ref dat);
//hacemos un cast a esa variable
//y la guardamos en la variable data
data = (string)dat;
//mostramos la información en log
ListBoxLog.Items.Add("Servidor - "
+ axWinsock1.RemoteHostIP
+ ": " + data);
}


//Esto pasa cuando se conecta a un servidor,
//muestra la información de conexion en el log
private void axWinsock1_ConnectEvent(object sender, EventArgs e)
{
ListBoxLog.Items.Add(
"Conectado con el servidor en: "
+ axWinsock1.RemoteHostIP);
isConnected = true;
}
}
}

Servidor

Una ves construido el cliente pasamos a construir la aplicación servidor que es muy similar al cliente, para esto abrimos otra instancia de Visual Studio y creamos un proyecto del tipo WindowsApplication y lo diseñamos mas o menos así.

clip_image011

De la misma forma como e hizo en el cliente, agregamos el componente Microsoft WinSock Control, versión 6.0.

Después agregamos el código del servidor.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinSockServer
{
public partial class ServerForm1 : Form
{
public ServerForm1()
{
InitializeComponent();
}
//variable para el tener un control
//sobre el estado de la conexion

bool isConnected = false;

private void btnEnviar_Click(object sender,EventArgs e)
{
try
{
if(isConnected)
{
//con esto se envía el texto que este el en txtMsg
xWinsock1.SendData(txtMsg.Text);
//Se muestra en pantalla la información que se envió
ListBoxLog.Items.Add("Servidor: "+ txtMsg.Text);
//se borra la info del txtmsg
txtMsg.Text = "";
}
else
MessageBox.Show("No estas conectado");
}
// con un bloque try-catch se cacha cualquier error
//que ocurra, y se muestra en el log
catch(AxMSWinsockLib.AxWinsock.InvalidActiveXStateException g)
{
ListBoxLog.Items.Add(g.ToString());
}
catch(Exception ex)
{
ListBoxLog.Items.Add(ex.Message);
}
}

private void btnEscuchar_Click(object sender,EventArgs e)
{
try
{
int x = 0;
if(portText.Text != "" &&
int.TryParse(portText.Text, out x))
{
//Para crear una conexion se necesita
//que el servidor(host) siempre este
//escuchando por un puerto especifico,
//y si un cliente se quiere conectar
//a el debe ir a abrir ese puerto

//Con esto se le asigna el puerto al winsock
axWinsock1.LocalPort = Int32.Parse(portText.Text);
isConnected = true;
//este comando abre la conexion
//con el puerto y se mantiene escuchando
//por el puerto especificado
axWinsock1.Listen();
labelEstado.ForeColor = Color.Green;
labelEstado.Text = "Escuchando por el puerto:";
labelPuerto.Text = portText.Text;
labelPuerto.ForeColor = Color.Green;
pictureBox1.Show();
pictureBox2.Hide();

ListBoxLog.Items.Add("Escuchando por el puerto: " + portText.Text);

buttonDesconectar.Enabled = true;
buttonEscuchar.Enabled = false;
buttonEnviar.Enabled = true;

}
else
{
MessageBox.Show("Debe asignar un puerto para escuchar","ERROR",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
catch
{
MessageBox.Show("Ocurrió un error, lo mas probable es que el puerto seleccionado no este disponible");
}
}

private void Desconectar_Click(object sender, EventArgs e)
{
try
{
//cierra la conexión con el cliente
axWinsock1.Close();
this.ListBoxLog.Items.Add("Desconectado.........");
buttonEscuchar.Enabled = true;
buttonDesconectar.Enabled = false;
buttonEnviar.Enabled = false;
labelEstado.Text = "Sin Escuchar ningún puerto";
labelPuerto.Text = "";
labelEstado.ForeColor = Color.Red;
pictureBox2.Show();
pictureBox1.Hide();
}
catch
{
MessageBox.Show("Ocurrió un error, el puerto no esta abierto", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

//cuando se hace una petición de
//conexión de parte de un cliente
private void axWinsock1_ConnectionRequest(object sender, AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent e)
{
if (isConnected == true)
{
axWinsock1.Close();
}

//este comando acepta la conexión con el cliente
axWinsock1.Accept(e.requestID);
isConnected = true;
//escribe en el log si el cliente esta conectado.
ListBoxLog.Items.Add("Cliente Conectado: " + axWinsock1.RemoteHostIP);
}
private void axWinsock1_DataArrival(object sender, AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent e)
{
//creamos una variable para obtener los
//datos que llegaron
string data = "";
//creamos otra variable tipo object porque
//el método que se utiliza para recibir
//datos es object
object dat = (object)data;
//obtenemos la información que envió el
//servidor en forma de object
axWinsock1.GetData(ref dat);
//hacemos un cast a esa variable y la
//guardamos en la variable data
data = (string)dat;

//mostraos la información en log
ListBoxLog.Items.Add(axWinsock1.RemoteHostIP + ": " + data);
}
  private void Form1_Load(object sender, EventArgs e)
{
//se muestra el nombre del equipo
lblHost.Text = axWinsock1.LocalHostName;
//se muestra la IP del equipo
lblIPlocal.Text = axWinsock1.LocalIP;
}
}
}

Por ultimo en la imagen se ve a las dos aplicaciones interactuando, para que esto funcione se debe primero abrir la aplicación servidor y ponerla a escuchar por algún puerto libre y después abrir la app cliente y ponerle la IP de la app servidor así como el puerto por la cual esta escuchando, con esto se dará la conexión y todo funcionara bien, este programa lo hice lo probé de forma local pero también funciona sin ningún problema por una LAN o por Internet.

FuncionandoClienteServidorWinsocks

Bueno, espero le haya servido a alguien. Si alguien ve algún error o tienen una duda por favor coméntela.

Para descargar las dos aplicaciones con todo el código fuente aquí les dejo el link de mi SkyDrive Winsocks Cliente-Servidor

 

Comments

Victor Medel said:

Hola

Este programa me llamo el atencion sobre el manejo de sockets, me gustaria saber si es posible realizarlo multithread para operar con diferentes clientes y un solo servidor

saludos

# May 26, 2009 8:15 PM

Edgar Rafael Galicia Reyes said:

Hola Víctor

Lo que yo se acerca de los Winsocks es que solo aceptan la conexión de un solo cliente por puerto o sea que para tener digamos 20 clientes, en el programa servidor deberás tener 20 controles Winsocks a los cuales les deberás asignar 20 puertos diferentes, eso es algo ineficiente pero también podrías crear los controles de forma dinámica u otra solución es meterte a investigar cómo se utiliza la clase "Socket" del espacio de nombres "System.Net.Sockets" que ahi si pueden ser varios clientes por un solo puerto solo que el nivel de dificultad para programarlos es mucho más elevado que los Winshock aunque el principio es el mismo, espero después cuando tenga más tiempo algo una entrada al blog acerca de la clase sockets que esta también muy interesante.

Saludos

# May 28, 2009 4:36 PM

Jairo said:

hola, que tal, he estado revisando codigo en visualbasic 2008 pero he visto que en ese lenguaje el control WinSocket se puede manejar de la siguiente manera: WinSocket1 (index) y digamos, que queriendo realizar la aplicacion de servidor-varios clientes a través del mismo puerto, en el servidor se utiliza el WinSocket(0) para dejar escuchando en el puerto X, y cuando llega una conexion nueva en ese puerto el WinSock(0) la recibe pero se la pasa a si mismo pero con un index diferente; ¿esto se puede hacer en c#?

# May 29, 2009 10:44 AM

dante said:

disculpa,

me estoy guiando por lo del programa cliente servidor

( que porcierto muy buen aporte)

y tengo muchos problemas con el winsock.

1.- al instalar visual studio 2008 en unapc a vecesno sale el componente y no se como cargarlo.

2.- cuando me llega asalir el componente, me marca error al importar control activeX.

me podrias ayudar

# September 9, 2009 4:09 PM

Edgar Rafael Galicia Reyes said:

Hola Dante,

1.- Para que te muestre el componente Winsock en Visual Studio antes de hacer los pasos explicados arriba tienes que tener la libreria llamada mswinsck.ocx  en la carpeta de C:\WINDOWS\system32\ y registrarla en el sistema desde el Simbolo del sistema con el comando "Regsvr32".

puedes descargar el la libreria mswinsck.ocx de este link : www.ocxdump.com/.../download.html

mas info del comando Regsvr32 en este link: ss64.com/.../regsvr32.html

2.- Para esto me tendria que poner el error que te muestra.

espero que esto te sirva.

saludos.

# September 10, 2009 9:44 AM

online-maris said:

necesidad de comprobar:)

# October 5, 2009 3:44 AM

juan said:

hola amigo est interezante tu aplicacion pero cuando quiero agregar el winsock a mi interfaz me sale un "error al crear el componente axhost"...debe tener un ermiso para utilizar este control activex..

# October 11, 2009 1:33 PM

juan said:

por favor ayudame tengo problemas a la hora de insertar el winsock en mi interfaz, me sale "error al crear el componente axhost"...debe tener un permiso para utilizar este control activex...

ayudame porfa que es para presentar en la U

# October 11, 2009 1:37 PM

Edgar Rafael Galicia Reyes said:

Hola Juan, No no tienes que tener ningun permiso en especial para este componente ActiveX, pero el componente si tiene que estar registrado en el sistema es decir, para que te muestre el componente Winsock en Visual Studio tienes que tener la libreria mswinsck.ocx en la carpeta de C:\WINDOWS\system32\ y registrarla en el sistema desde el Simbolo del sistema con el comando "Regsvr32".

Aqui te pongo unos links que te podrian ayudar,

puedes descargar la libreria mswinsck.ocx de este link : www.ocxdump.com/.../download.html

mas info del comando Regsvr32 en este link: ss64.com/.../regsvr32.html

espero que te sirva de algo. saludos

# October 11, 2009 3:10 PM

Nelson said:

hola disculpen como puedo hacer para q en ves de solo una conexion el servidor acepte varias coneciones es decir varios clientes a la ves 1, 2,3 o N clientes a la ves

# November 2, 2009 5:26 PM

SkyCode C# Programing said:

disculpa como hago para q en ves de solo una conexcion acepte varias una dos tres o N conexciones porfavor ayundeme q no logro hacerlo T_T

# November 2, 2009 5:54 PM

Bart_ec said:

Si se puede tener varios clientes con un solo servidor con el index como lo dijo (Jairo said) y lo realice y si funciona perfectamente ingresan N clientes......

# December 7, 2009 5:00 PM

GyoX said:

Hola estaba leyendo este post por mera curiosidad y tengo una duda, que diferencias hay entre utilizar este ocx a utilizar la clase socket, en lo que se refiere a funcionalidad y eficiencia? ¿En que casos se debe usar la clase Socket y en cuales WinSock?

Un saludo.

# December 10, 2009 7:16 AM

Dan said:

Los sockets funcionan bien. Lo unico es que la cadena que recibo en el socket server es muy largar; mas de 3000 caracteres. Como puedo hacerle para que en esta linea de codigo pueda ver toda la cadena de una sola vez?

linea 146 Server Form1

axWinsock1.GetData(ref dat);

Gracias por la ayuda.

# December 13, 2009 10:27 PM

jsoe mejia said:

te cuento q yo desarrolle un sistema distrbuido en cbuillder 5,este fnciona muy bien en forma local tanto cliente como servidor, lo malo es q cuando lo probe en una red LAN, mi servidor funciona con tranquilidad, peo mis clientes, mandan el mensaje pero esos no se visualizan en el servidor, y cuando quiero acceder a un recurso de mi servidor(ejemplo una funcion q me sume 2 numeros) desde mi cliente, este nome envia nada, o se q puede ser, ya trate de solucionarlopero el codigo esta bueno. muchas gracias por la ayuda de antemano porfa si me puedes brindar alguna slucion solo al mi mail.............. GRACIAS..................
# January 6, 2010 8:28 PM

EDISON said:

QUE TAL PANA LE TRATO DE HACER PERO NO TE CACHO O NO ENTIENDO Q CONPONENTES UTILIZAS PODRIAS ENVIARME A MI COORREO TODA LA SOLUCION PARA HACI ANALIZARLE YA Q TENGO UN PROBLEMA TEGO QUE REALIZAR UN SITEMA PRA PASAR LA MATERIA DE DISTRIBUIDAS ACOLITA Q DICES MI EMAIL ES exlq@hotmail.com

# February 2, 2010 12:32 PM

RYU said:

hola, este programa solo manda mensajes de texto, como hacer para mandar cualquier clase de archivo?
# March 10, 2010 12:29 PM

Cesar said:

no me sale la conexion esta todo igual pero no me sale q pasara me sale toos los mensajes exitosos pero no me sale Cliente Conectado... eso no

# March 29, 2010 6:13 PM

Cesar said:

no me reconoce tampoco la libreria linq.. q hago es urgente...

# March 29, 2010 6:16 PM

carlos alberto pupo said:

hola hermano, estoy trabajando en un proyectico que requiere de este tipo de cosas, seria una aplicacion en escucha y que desde otra PC(cliente) le envio a la PC servidora (la que tiene la aplicacion en escucha) una accion, esta la reconoce y levanta un .exe que yo tengo hecho, como lo hago???

gracias de antemano

# April 6, 2010 8:33 AM

carlos alberto pupo said:

hola hermano, necesitaria que me pudieras dar instrucciones de algo parecido a esto, es una aplicacion en escucha, que recibe una señal de otra PC, y entonces en la PC que esta en escucha se levanta un .exe que tengo hecho en c#, agradeceria que me pudieras ayudar con esto.

saludos

# April 6, 2010 8:35 AM

María said:

Hola, primero gracias por el aporte, pero tengo un problema con la multiconexión. He intentado hacer lo que comentan aqui de usar un index y poner el servidor con winsock(0) pero no logro que funcione. Todos los ejemplos que veo están en .NET pero necesito que sea en C#. ¿Podeis ayudarme?

# April 22, 2010 3:40 AM

esteban said:

Como se hace para utilizar el winsock para conectar una PDA a una impresora??

gracias y saludos

# April 22, 2010 2:44 PM

omar alejandro said:

hola que tal.. funciona muy bien... muchas gracias. cuando intente probarlo en otras computadoras me dio el error que se menciona arriba y solo se necesita hacer esto pasos. 1.- copiar dicha libreria en C:\WINDOWS\system32 2 ejecutar "Regsvr32 MSWINSCK.OCX" menu de inicio\ ejecutar \Regsvr32 MSWINSCK.OCX y listo!!! espero que les funcione saludos
# April 28, 2010 5:29 PM

Jose B said:

Buenas!

Muy buena la aplicación, bastante sencilla de entender y de seguir el ejemplo. Sin embargo, tengo un problema y es al momento de comunicar ambas partes; puntualmente, cuando envío un mensaje desde cualquiera de las dos me retorna una excepción poco explícita: "Exception de HRESULT: 0x800A9C46". La busqué en Intenet pero no logro saber por qué surge.

Agradezco cualquier información que me pueda ayudar a solucionar este inconveniente.

Saludos!

# September 20, 2010 8:54 PM

Isaac Robles said:

Alguien se apunta para hacer un Clon de Messenger en C#?

# October 5, 2010 8:10 PM

wjvelasquez said:

Buen dia. Gracias por el ejemplo, espero que me sirva para ayudarme a migrar un sistema en VB6 a C#. En este momento estoy estudiandome el VS2010 En uno de los post dices que puede usar "Winsock(index)" para tener varias conexiones. El detalles es que en VS.NET no se permiten las matrices de controles. La forma mas adecuada seria cargar de forma dinamica un winsock por cada peticion. Aunque tengo poca experiencia en VS.NET en VB6 tengo mucha y tengo un sistema online en el que uso el control con una matriz y puedo cargar cada conexion en un "index" para cada conexion
# October 20, 2010 7:29 AM

Shishi said:

Auxilio ! necesito utilizar winsock y no me aparece en la lista, ya hice de todo pero aun asi no aparece, espero respondas :(. Descargue el mswinsck.ocx y lo registre y nada. Tendra que ver que solo tengo una version visual C# 2005 express edition ? Gracias Alguien que me ayude :(
# October 27, 2010 12:30 AM

anonimo said:

muy bueno
# November 3, 2010 5:40 PM

anonimo said:

Exelecente
# November 3, 2010 5:40 PM

Alex said:

Buen dia man una pregunta y como aria para utilizar casi la misma intefaz pero sin el winsock ??
# December 1, 2010 7:02 PM

J4cKaL__ said:

Yo tenia el mismo problema de la licencia de activex con el microsoft winsock 6.0 al abrir la forma de diseño me aparecia ese error de licencia activex se soluciona bajandose el visual basic 6.0 e instalandolo en tu equipo, a mi me apareciaron varios errores al hacer la instalacion por q lo instale en windows server 2008, pero asi fue la unica forma de solucionarlo, luego de la instalacion me funciono Salu2
# December 28, 2010 12:59 PM

paci said:

eeeeeeeeeeeee

# February 9, 2011 7:30 AM

rooolas said:

oyes una preguta utilizando tu cliente servidor como lo puedo anexar o como le puedeo acer para que este resuelta ecuaciones(pero el que resuelte ecuaciones ya lo tengo desarrollado aparte )pero como los puedo conectar en pocas palabras que en el cliente introdusca los datos y el servidor realize las ooperaciones y resgrese las operaciones ?¡¡

como le puedo acer??¡¡¡¡¡

# April 2, 2011 12:02 AM

felipe said:

gracias por el ejemplo, y una pregunta ¿sabes como puedo bloquear una pc en red usando winsock?

# June 22, 2011 2:15 PM

Edwin said:

Hola, me funciona de maravilla pero tengo una duda con respecto a algo que necesito.

En mi PC tengo dos tarjetas de red. Necesito enviar un paquete de datos por una de estas pero se envia automaticamente por la otra y la unica forma de que me funcione es deshabilitando una.

Puedo decirle al axWinsock1 que envie los datos por la tarjeta de red de mac XX-XX-XX-XX-XX-XX ???

# July 9, 2011 10:32 AM

Edwin said:

Hola, me funciona de maravilla pero tengo una duda.

Tengo dos tarjetas de red en mi PC y necesito enviar un paquete por una de ellas, el problema es que se envia por la otra tarjeta de red y la unica manera de hacer que funcione es deshabilitando una.

Hay alguna manera de decirle al axWinsock1 que envie los paquetes por la tarjeta de red de MAC XX-XX-XX-XX-XX-XX ???

Ya intente con axWinsock1.Bind(puerto, ip) pero el WireShark no me muestra nada cuando envio el dato por la red que necesito...

:(

# July 9, 2011 10:37 AM

Dark111 said:

Hola,yo lo estoy haciendo ya que lo llevo tiempo buscando pero me gustaria saber como conseguir la aplicacion winsocks.

Muchas Gracias!

# September 9, 2011 8:39 AM

Emilio said:

Tengo una duda, no me marca conexión marcándome el error HRESULT 0x800A9C52 en el cliente. Mi duda es. ¿De dónde sacaste el puerto disponible? o si modificaste el activeX?

# September 22, 2011 5:40 PM

anonimo said:

excelente aporte, me sirvio a la perfeccion xD

# October 31, 2011 8:49 PM

Buy oem software said:

HItzPj Author, Shoot yourself a knee..!!

# November 12, 2011 12:15 PM

Download oem software said:

yuiWmv Author, Shoot yourself a knee..!!

# November 13, 2011 1:53 AM

Buy cheap software said:

ZeHkx8 Author, Shoot yourself a knee..!!

# November 13, 2011 5:42 AM

OEM software online said:

9TbumF I`m so grateful that you enlightened me and the most important thing that it happened in time. Just think, I have been using the internet for six years already but it`s the first time I`ve ever heard about it!....

# November 13, 2011 11:57 PM

Buy cheap microsoft software online said:

xRJuS9 I almost accidentally visited to this site, but stayed here for a long time. Stayed because everything was very interesting. Surely will share with all my friends!....

# December 1, 2011 9:34 AM

shop by brand said:

Yeah, it is clear now !... From the very beginning I did not understand where was the connection with the title !!....

# December 2, 2011 3:31 AM

hcg diet said:

Yeah, in my opinion, it is written on every fence!!....

# December 2, 2011 4:33 AM

tech blog said:

Thanks:) Cool topic, write more often! You manage with it perfctly:DD

# December 2, 2011 4:55 AM

cheap domain registration said:

Is anybody strong in radio here? We need a colleague who would tell us briefly about the transistor T2. I hope there are radio amateurs here. If it`s not on the subject at all, then I`m sorry. I have to write  because I have no choice. PS: if the spelling is not right then also I'm sorry, I'm just 13 years old!....

# December 2, 2011 5:31 AM

canon printer cartridges said:

Internet is written with the capital letter in a sentence, by the way. And hundredths are written not with a point but with a comma. This is according to the standard. And actually everything is very good..!!

# December 2, 2011 6:06 AM

How much house can i afford said:

See it for the first time!!....

# December 2, 2011 6:43 AM

Program telewizyjny said:

I subscribed to RSS, but for some reason, the messages are written in the form of some hieroglyph (How  can it be corrected?!....

# December 2, 2011 7:20 AM

55LW6500 said:

Sometimes I also see something like this, but earlier I didn`t pay much attention to this!....

# December 2, 2011 10:11 AM

independent escorts london said:

I subscribed to RSS, but for some reason, the messages are written in the form of some hieroglyph (How  can it be corrected?!....

# December 2, 2011 10:49 AM

Ear Infection said:

The author deserves for the monument:DD

# December 3, 2011 5:23 AM

electronic cigarette said:

I must admit, the webmaster is a cool guy..!!

# December 3, 2011 8:38 AM

belly dance hip scarf said:

I do`t see a feedback or the other coordinates from the blog administration!....

# December 3, 2011 9:14 AM

computer repair said:

However, the author created a cool thing..!!

# December 3, 2011 5:30 PM

munnar tea said:

The Author is crazy..!!

# December 4, 2011 2:28 PM

Mother and Newborn Baby said:

Left on my site a link to this post. I think many people will be interested in it..!!

# December 5, 2011 11:54 AM

residual income said:

It's pleasant sitting at work to distract from it�to relax and read the information written here:DD

# December 5, 2011 12:38 PM

Water Damage Tucson said:

I do`t regret that spent a few of minutes for reading. Write more often,  surely'll come to read something new!....

# December 5, 2011 2:18 PM

business opportunities said:

Yeah, in my opinion, it is written on every fence!!....

# December 5, 2011 2:55 PM

watch super bowl live online said:

I was looking for the report  in Yandex and suddenly came across this page. I found a little information on my topic of my report. I would like more, and thanks for that..!!

# December 6, 2011 4:31 AM

vestuviniai ziedai said:

Well, actually, a lot of what you write is not quite true !... well, okay, it does not matter:DD

# December 6, 2011 5:06 AM

attorney Orange County said:

Somewhere in the Internet I have already read almost the same selection of information, but anyway thanks!!....

# December 6, 2011 5:40 AM

solution naturelle said:

It's pleasant sitting at work to distract from it�to relax and read the information written here:DD

# December 6, 2011 6:56 AM

Imagefilm said:

Every time I come back here again and don`t get disappointed..!!

# December 6, 2011 7:31 AM

emergency tree service said:

Gripping! I would like to listen to the experts` views on the subject!!....

# December 6, 2011 8:22 AM

cremation urns said:

Cool! You have answered. I'll take a quote! The meaning of life and everything else. Decided. No kidding!....

# December 6, 2011 8:58 AM
Leave a Comment

(required) 

(required) 

(optional)

(required)