public class UDPSend
{
System.Net.Sockets.UdpClient UDP_C; //用于请求的UDP实列
//构造函数
public UDPSend(string host, int point)
{
CfgLoader xs = new CfgLoader();
try
{
UDP_C = new System.Net.Sockets.UdpClient(Convert.ToInt32(xs.GetPort()));
}
catch (Exception e)
{
string b = "";
}
UDP_C.Connect(host, point);
}
//发送请求信息
public void sendMsg(string s)
{
byte[] msg = System.Text.Encoding.UTF8.GetBytes(s);
UDP_C.Send(msg, msg.Length);
UDP_C.Close();
}
public void sendMsg(byte[] s)
{
UDP_C.Send(s, s.Length);
UDP_C.Close();
}
}
最开始的时候,我在实例化UDP_C的时候没有指定本机发送数据的端口(非对方接收数据的端口),不会出错, 但后来指定了端口之后(UDP_C = new System.Net.Sockets.UdpClient(Convert.ToInt32(xs.GetPort()));)
第二次调用就要出错:通常每个套接字地址(协议/网络地址/端口)只允许使用一次
但是要命的这个VS,跟踪到这一句,并不报错,而是直接中断了我的调试模式,好吧,我写上try catch,他竟然进不去try catch,而且连断点都无法打到catch的代码块里面去。
无奈之下,执行到(UDP_C = new System.Net.Sockets.UdpClient(Convert.ToInt32(xs.GetPort()));)时,选中new后面的,然后右击,按Q(什么功能,自己去调试的时候看),就看到错误信息了。。。。
vs2008有时候还真有怪异的事情