Bueno estoy dejando volar la imaginacion, estoy usando UDP, lo que hace el programa es tomar un archivo de texto, leerlo obtiene los bytes y luego los envia al destino. Estoy usando el mismo codigo que hice para hacer un chat en mi red local, solo que ahora agrego System.IO; y hago que lea un archivo:
private void cmdEnviar_Click(object sender, EventArgs e)
{
//Contiene la dirección de Broadcast y el puerto utilizado
IPEndPoint DirecciónDestino = new IPEndPoint(IPAddress.Broadcast, 20145);
//Buffer que guardará los datos hasta que se envíen
string nombre = txtMensaje.Text;
string cadena;
StreamReader fl = null;
txtMensaje.SelectAll();
try
{
fl = new StreamReader(nombre);
do
{
cadena = fl.ReadLine();
}
while (cadena != null);
}
finally
{
if (fl != null)
fl.Close();
}
//Acá intento mandar los bytes
byte[] DatosBytes = Encoding.Default.GetBytes(cadena);
//Envía los datos
ElSocket.SendTo(DatosBytes, DatosBytes.Length, SocketFlags.None, DirecciónDestino);
Y me dice:
System.ArgumentNullException was unhandled
Message="String reference not set to an instance of a String.\r\nParameter name: s"
Source="mscorlib"
ParamName="s"
StackTrace:
at System.Text.Encoding.GetBytes(String s)
at Broadcast_utilizando_UDP.frmMain.cmdEnviar_Click(Object sender, EventArgs e) in C:\Documents and Settings\pietro\Escritorio\C#\Sockets\Broadcast utilizando UDP\frmMain.cs:line 68
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.PerformClick()
at System.Windows.Forms.Form.ProcessDialogKey(Keys keyData)
at System.Windows.Forms.TextBoxBase.ProcessDialogKey(Keys keyData)
at System.Windows.Forms.Control.PreProcessMessage(Message& msg)
at System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
at System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)
at System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FPreTranslateMessage(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Broadcast_utilizando_UDP.Program.Main() in C:\Documents and Settings\pietro\Escritorio\C#\Sockets\Broadcast utilizando UDP\Program.cs:line 16
at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
Mirando el error, lo primero que hice fue ver que pasa con la variable
s y sorpresa!: No existe
Ojalá me puedan ayudar con esto.
Muchas gracias de antemano