请教C#WinForm下的UDP代码(服务器和客户端)

sjbird331 2007-04-02 02:31:47
本人分别写了客户端和服务器下的代码,程序的目的是客户端和服务器可以互相发送信息。但程序编译能通过,但总是不能传送信息,希望各位高手能给出指点,谢谢!!
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
服务器端:
服务器是由两个textBox(textBox1用来指示IP地址127.0.0.1,textBox2用来指示服务器端的端口(3456)),一个listBox(listBox用来显示服务器和客户端的连接状况),两个richTextBox(richTextBox1用来显示客户端发送给服务器的信息,richTextBox2用来显示服务器发送给客户端的信息),三个button(button1用来建立连接并接收来自客户端的信息,button2用来关闭连接并停止发送,button3用来发送信息给客户端),代码如下:
private UdpClient server;
private void button1_Click(object sender, System.EventArgs e)
{ start();}
////////////
private void button2_Click(object sender, System.EventArgs e)
{ server.Close();
this.listBox1.Items.Add("The Connection canceled!");
}
////////////
private void start()
{ server=new UdpClient(3456);
IPEndPoint myhost=null;
try
{this.listBox1.Items.Add("Waitng for a Client……");
byte[] bytes=server.Receive(ref myhost);
this.richTextBox1.Text=System.Text.Encoding.Unicode.GetString(bytes,0,bytes.Length);
this.listBox1.Items.Add("Connection Success!");
}
catch(Exception err)
{ this.listBox1.Items.Add(err.ToString());}
}
//////////
private void button3_Click(object sender, System.EventArgs e)
{ try
{ this.listBox1.Items.Add("开始发送信息!");
byte[] bytes=Encoding.Unicode.GetBytes(this.richTextBox2.Text);
server.Send(bytes,bytes.Length,this.textBox1.Text,4500);
}
catch(Exception err)
{ MessageBox.Show(err.ToString());}
}
////////////////////////////////////////////////////////////////////////////////////////////
客户端:
客户端是由由两个textBox(textBox1用来指示IP地址127.0.0.1,textBox2用来指示客户端的端口(4500)),一个listBox(listBox用来显示客户端的状态),两个richTextBox(richTextBox1用来显示服务器发送给客户端的信息,richTextBox2用来显示客户端发送给服务器的信息),两个button(button1用来建立与服务器连接并发送和接收信息,button2用来关闭连接并停止发送),当然在运行时得先运行客户端。代码如下:
private UdpClient client;
//////////////
private void button1_Click(object sender, System.EventArgs e)
{client=new UdpClient(4500);
try
{this.listBox1.Items.Add("正在向服务器发送数据……");
byte[] bytes=System.Text.Encoding.Unicode.GetBytes(this.richTextBox2.Text);
IPEndPoint host=null;
byte[] response=client.Receive(ref host);
this.richTextBox1.Text=System.Text.Encoding.Unicode.GetString(response);
}
catch(Exception err)
{ this.listBox1.Items.Add(err.ToString());}
}
////////////////
private void button2_Click(object sender, System.EventArgs e)
{client.Close();
this.listBox1.Items.Add("The Connection canceled!");
}
报错的语句是server=new UdpClient(3456);和client=new UdpClient(4500);,系统提示是每个套接字只能用一次 我很是不理解…………
...全文
261 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
panzi667 2007-10-23
  • 打赏
  • 举报
回复
学习
sjbird331 2007-04-02
  • 打赏
  • 举报
回复
没有啊。就是不知道怎么回事?您要不建个Form帮我看看?谢谢
Red_angelX 2007-04-02
  • 打赏
  • 举报
回复
netstat -an 看端口是否被占了
sjbird331 2007-04-02
  • 打赏
  • 举报
回复
可是我用了http://www.codesky.cn/article/doc/200507/2005073094963641.htm
的程序后 仍然说每个套接字只能用一次 我很是不理解………………
wshuangminlg 2007-04-02
  • 打赏
  • 举报
回复
帮LZ顶
Red_angelX 2007-04-02
  • 打赏
  • 举报
回复
see
http://www.codesky.cn/article/doc/200507/2005073094963641.htm

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧