ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:178.49KB ,
资源ID:7696754      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7696754.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(UDP编程示例Word文档格式.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

UDP编程示例Word文档格式.docx

1、 public partial class FormChat : Form delegate void AddListBoxItemCallback(string text); AddListBoxItemCallback listBoxCallback; /使用的接收端口号 private int port = 8001; private UdpClient udpClient; public FormChat() InitializeComponent(); /初始化 listBoxCallback = new AddListBoxItemCallback(AddListBoxItem);

2、 private void AddListBoxItem(string text) /如果listBoxReceive被不同的线程访问则通过委托处理; if (listBoxReceive.InvokeRequired)/ C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它。 this.Invoke(listBoxCallback, text); else listBoxReceive.Items.Add(text); listBoxReceive.SelectedInd

3、ex = listBoxReceive.Items.Count - 1; / / 在后台运行的接收线程/summary private void ReceiveData() /在本机指定的端口接收 udpClient = new UdpClient(port); IPEndPoint remote = null; /接收从远程主机发送过来的信息; while (true) try /关闭udpClient时此句会产生异常 byte bytes = udpClient.Receive(ref remote); string str = Encoding.UTF8.GetString(bytes,

4、 0, bytes.Length); AddListBoxItem(string.Format(来自0:1, remote, str); catch /退出循环,结束线程 break; / 发送数据到远程主机 private void sendData() UdpClient myUdpClient = new UdpClient(); IPAddress remoteIP; if (IPAddress.TryParse(textBoxRemoteIP.Text, out remoteIP) = false)/如果字符串包含非数值字符或者所包含的数值对于指定的特定类型而言太大或太小,TryPa

5、rse都将返回 false 并将 out 参数设置为零。否则,它将返回 true,并且将 out 参数设置为字符串的数值 MessageBox.Show(远程IP格式不正确); return; IPEndPoint iep = new IPEndPoint(remoteIP, port); byte bytes = System.Text.Encoding.UTF8.GetBytes(textBoxSend.Text); myUdpClient.Send(bytes, bytes.Length, iep); textBoxSend.Clear(); myUdpClient.Close(); t

6、extBoxSend.Focus(); catch (Exception err) MessageBox.Show(err.Message, 发送失败 finally private void FormChat_Load(object sender, EventArgs e) /设置listBox样式 listBoxReceive.HorizontalScrollbar = true; listBoxReceive.Dock = DockStyle.Fill; /扩展填满单元格 /获取本机第一个可用IP地址 IPAddress myIP = (IPAddress)Dns.GetHostAddr

7、esses(Dns.GetHostName().GetValue(0); /为了在同一台机器调试,此IP也作为默认远程IP textBoxRemoteIP.Text = myIP.ToString(); /创建一个线程接收远程主机发来的信息 Thread myThread = new Thread(new ThreadStart(ReceiveData); /将线程设为后台运行 myThread.IsBackground = true; myThread.Start(); / 单击发送按钮触发的事件 private void buttonSend_Click(object sender, Ev

8、entArgs e) sendData(); / 在textBoxSend中按下并释放Enter键后触发的事件 private void textBoxData_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = (char)Keys.Enter) private void FormChat_FormClosing(object sender, FormClosingEventArgs e) udpClient.Close(); (3) 按键编译并执行,向默认远程主机发送一些信息,运行效果如图2所示。【例2】编写一个Wind

9、ows应用程序,向子网发送广播信息,同时接收子网中的任意主机发送的广播信息。 (1) 创建一个名为BroadcastExample的Windows应用程序,修改Form1.cs为FormBroadcast.cs,设计界面如图3所示。namespace BroadcastExample public partial class FormBroacast : delegate void AppendStringCallback(string text); AppendStringCallback appendStringCallback; public FormBroacast() appendS

10、tringCallback = new AppendStringCallback(AppendString); private void AppendString(string text) if (richTextBox1.InvokeRequired = true) this.Invoke(appendStringCallback, text); richTextBox1.AppendText(text + rn AppendString(string.Format( /让其自动提供子网中的IP广播地址 IPEndPoint iep = new IPEndPoint(IPAddress.Br

11、oadcast, 8001); /允许发送和接收广播数据报 myUdpClient.EnableBroadcast = true; /将发送内容转换为字节数组 byte bytes = System.Text.Encoding.UTF8.GetBytes(textBox1.Text); /向子网发送信息 textBox1.Clear(); textBox1.Focus(); private void FormBroacast_Load(object sender, EventArgs e) private void FormBroacast_FormClosing(object sender,

12、 FormClosingEventArgs e)(3) 按键编译并执行,发送一些信息,观察结果。【例3】编写一个Windows应用程序,利用组播技术向子网发送组播信息,同时接收组播的信息。 (1) 创建一个名为MulticastExample的Windows应用程序,修改Form1.cs为FormMulticast.cs,设计界面如图4所示。namespace MulticastExample public partial class FormMulticast : public FormMulticast() /必须使用组播地址范围内的地址 udpClient.JoinMulticastGr

13、oup(IPAddress.Parse(224.0.0.1); udpClient.Ttl = 50; IPEndPoint iep = new IPEndPoint(IPAddress.Parse(), 8001); private void FormMulticast_Load(object sender, EventArgs e) private void FormMulticast_FormClosing(object sender, FormClosingEventArgs e)【例4】编写一个Windows应用程序,利用组播技术进行网络会议讨论。 (1) 创建一个名为“NetMee

14、tingExample”的Windows应用程序,修改Form1.cs为FormMeeting.cs,设计界面如图5所示。namespace NetMeetingExample public partial class FormMeeting : private enum ListBoxOperation AddItem, RemoveItem ; private delegate void SetListBoxItemCallback( ListBox listbox, string text, ListBoxOperation operation); SetListBoxItemCallb

15、ack listBoxCallback; /使用的IP地址 private IPAddress ip = IPAddress.Parse(224.100.0.1 public FormMeeting() listBoxCallback = new SetListBoxItemCallback(SetListBoxItem); private void SetListBoxItem(ListBox listbox, string text, ListBoxOperation operation) if (listbox.InvokeRequired = true) this.Invoke(lis

16、tBoxCallback, listbox, text, operation); if (operation = ListBoxOperation.AddItem) if (listbox = listBoxAddress) if (listbox.Items.Contains(text) = false) listbox.Items.Add(text); listbox.SelectedIndex = listbox.Items.Count - 1; listbox.ClearSelected(); else if (operation = ListBoxOperation.RemoveItem) listbox.Items.Remove(text); private void SendToAll(string sendString) IPEndPoint iep = new IPEndPoint(ip, port); byte bytes = System.Text.Encoding.UTF8.GetBytes(sendString);

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2