public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
String text = textBox1.Text;
UdpClient udpc = new UdpClient(text,8899);
IPEndPoint ep = null;
while (true)
{
MessageBox.Show("Name: ");
string name = "Connected";
if (name == "") break;
byte[] sdata = Encoding.ASCII.GetBytes(name);
udpc.Send(sdata, sdata.Length);
if (udpc.Receive(ref ep)==null)
{
MessageBox.Show("Host not found");
}
else
{
byte[] rdata = udpc.Receive(ref ep);
string job = Encoding.ASCII.GetString(rdata);
MessageBox.Show(job);
}
}
}
我的远程计算机未连接时收到错误消息。使用此代码即可获得错误。
if (udpc.Receive(ref ep)==null)
错误消息套接字异常未被隐藏(现有连接被远程主机强行关闭)
答案 0 :(得分:1)
将代码包装在
中try
{
}
catch(SocketException se)
{
}
catch(Exception ex)
{
}
从这里开始获取有关SocketException的文档
http://msdn.microsoft.com/en-us/library/system.net.sockets.socketexception.aspx
答案 1 :(得分:1)
如果未处理异常,则处理异常:
while (true)
{
MessageBox.Show("Name: ");
string name = "Connected";
if (name == "") break;
byte[] sdata = Encoding.ASCII.GetBytes(name);
try{
udpc.Send(sdata, sdata.Length);
byte[] rdata = udpc.Receive(ref ep);
string job = Encoding.ASCII.GetString(rdata);
MessageBox.Show(job);
}
catch(Exception ex)
{
MessaageBox.show(ex.toString());
}
}
当程序访问外部资源(dbs,队列,文件系统,http连接,udp套接字等)时,始终建议使用try...catch
块。
答案 2 :(得分:-1)
您可以将无限循环包装在try catch块中。
try
{
while(true)
{
//your code
}
}
catch(Exception exception)
{
//show exception.Message;
}
finally{ //clean up}
看看how它已经完成。