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;
using System.Threading;namespace WindowsApplication4
{
public partial class Form1 : Form
{
public UdpClient server = new UdpClient(5566);
static IPEndPoint myend = new IPEndPoint(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0], 5566);
public UdpClient client=new UdpClient(myend);
Thread mythread;
private ManualResetEvent myreset = new ManualResetEvent(false); public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
mythread = new Thread(new ThreadStart(listenport));
mythread.Start();
} private void sendinfo(IAsyncResult ia)
{
try
{
UdpClient tmpclient = (UdpClient)ia.AsyncState;
int bytessent = tmpclient.EndSend(ia);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} private void listenport()
{
while (true)
{
myreset.Reset();
Application.DoEvents();
try
{
client.BeginReceive(new AsyncCallback(this.receiveinfo), client);
}
catch (Exception ex)
{
MessageBox.Show("出现错误:" + ex.Message.ToString());
break;
}
myreset.WaitOne();
}
} private void receiveinfo(IAsyncResult ia)
{
myreset.Set();
IPEndPoint romeend = new IPEndPoint(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0], 5566);
UdpClient tmplisten = (UdpClient)ia.AsyncState;
try
{
byte[] buffer = tmplisten.EndReceive(ia, ref romeend);
showinfo(buffer);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
} private void showinfo(byte[] buffer)
{
MessageBox.Show(Encoding.BigEndianUnicode.GetString(buffer));
} private void button1_Click(object sender, EventArgs e)
{
IPEndPoint end = new IPEndPoint(IPAddress.Parse("255.255.255.255"), 5566);
byte[] info = Encoding.BigEndianUnicode.GetBytes(textBox1.Text);
try
{
client.BeginSend(info, info.Length, end, new AsyncCallback(sendinfo), client);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
以上程序如果我把public UdpClient server = new UdpClient(5566);这一句去掉就不能收到消息,请高手解释一下,谢了,
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;
using System.Threading;namespace WindowsApplication4
{
public partial class Form1 : Form
{
public UdpClient server = new UdpClient(5566);
static IPEndPoint myend = new IPEndPoint(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0], 5566);
public UdpClient client=new UdpClient(myend);
Thread mythread;
private ManualResetEvent myreset = new ManualResetEvent(false); public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
mythread = new Thread(new ThreadStart(listenport));
mythread.Start();
} private void sendinfo(IAsyncResult ia)
{
try
{
UdpClient tmpclient = (UdpClient)ia.AsyncState;
int bytessent = tmpclient.EndSend(ia);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} private void listenport()
{
while (true)
{
myreset.Reset();
Application.DoEvents();
try
{
client.BeginReceive(new AsyncCallback(this.receiveinfo), client);
}
catch (Exception ex)
{
MessageBox.Show("出现错误:" + ex.Message.ToString());
break;
}
myreset.WaitOne();
}
} private void receiveinfo(IAsyncResult ia)
{
myreset.Set();
IPEndPoint romeend = new IPEndPoint(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0], 5566);
UdpClient tmplisten = (UdpClient)ia.AsyncState;
try
{
byte[] buffer = tmplisten.EndReceive(ia, ref romeend);
showinfo(buffer);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
} private void showinfo(byte[] buffer)
{
MessageBox.Show(Encoding.BigEndianUnicode.GetString(buffer));
} private void button1_Click(object sender, EventArgs e)
{
IPEndPoint end = new IPEndPoint(IPAddress.Parse("255.255.255.255"), 5566);
byte[] info = Encoding.BigEndianUnicode.GetBytes(textBox1.Text);
try
{
client.BeginSend(info, info.Length, end, new AsyncCallback(sendinfo), client);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
以上程序如果我把public UdpClient server = new UdpClient(5566);这一句去掉就不能收到消息,请高手解释一下,谢了,
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货