黑马程序员技术交流社区

标题: 网络编程的问题 [打印本页]

作者: lilong9298    时间: 2013-6-18 15:49
标题: 网络编程的问题
怎样使用udp协议来实现客户端与服务器的访问,有高手知道吗
作者: 向德伟    时间: 2013-6-18 17:30
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Net;
  9. using System.Net.Sockets;
  10. using System.Threading;

  11. namespace test_udp
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         UdpClient udpclient;
  16.         Byte[] sendBytes;
  17.         IPEndPoint temp;
  18.         public Form1()
  19.         {
  20.             InitializeComponent();
  21.         }

  22.         //发送按键
  23.         private void button1_Click(object sender, EventArgs e)
  24.         {
  25.             //定义一个字节数组,用来存放发送到远程主机的信息
  26.             sendBytes = Encoding.Default.GetBytes(textBox3.Text);
  27.             //调用send方法发送到远程主机
  28.             udpclient.Send(sendBytes, sendBytes.Length);
  29.         }

  30.         //确认配置
  31.         private void button2_Click(object sender, EventArgs e)
  32.         {
  33.             //实例化udpclient对象
  34.             udpclient = new UdpClient(Convert.ToInt32(textBox2.Text));
  35.             //调用connect建立默认远程主机
  36.             udpclient.Connect(textBox1.Text, Convert.ToInt32(textBox2.Text));
  37.             //实例化ipendpoint对象,用来显示响应主机的标识
  38.             temp = new IPEndPoint(IPAddress.Any,0);
  39.             //开启接收线程
  40.             Thread recv_udp = new Thread(new ThreadStart(recv_udp_func));
  41.             recv_udp.Start();
  42.         }

  43.         //接收线程
  44.         public void recv_udp_func()
  45.         {
  46.             while (true)
  47.             {
  48.                 //接收数据包
  49.                 Byte[] recv_bytes = udpclient.Receive(ref temp);
  50.                 //将得到的数据包转换为字符串形式
  51.                 string return_data = Encoding.Default.GetString(recv_bytes,0,recv_bytes.Length);
  52.                 //显示
  53.                 this.Invoke((EventHandler)delegate { this.textBox4.Text = return_data; });
  54.             }
  55.         }
  56.     }
  57. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2