最近在.net Winform下面使用UdpClient ,将其作为其中一个子类(设为A)的成员变量,A根据用户操作,而可能会被反复创建和销毁多次。在用户反复操作的过程中,会出现"通常每个套接字地址(协议/网络地址/端口)只允许使用一次"错误。这是由于UdpClient 没有被销毁所致。因此使用“using”关键字,将UdpClient 作为成员变量,每次用完后都进行销毁,则不会出现上述错误了。
try {
using(UdpClient udpSelexClient = new UdpClient(61000))
{
while(true)
{
byte[] buffer = udpSelexClient.Receive(ref m_UdpSelexRecEndPnt);
//do something here
}
}
} catch(Exception e) {
MessageBox.Show("[Error]: UDP " + e.Message);
} finally {
MessageBox.Show("Exit Selex UDP!");
}
在使用上述代码后,一般也要稍微等待片刻,等待彻底释放完UdpClient 所占用资源后,再进行反复操作。