C#使用Socket通过UDP通信 代码示例

摘要:本文使用C#的Socket类简单的实现了通过UDP通信的程序。

示例编写环境

  操作系统:Windows 7 32bit Ultimate

  开发软件:Microsoft Visual Studio Ultimate 2012 Update 1

  程序集:   Microsoft .Net Framework 4.5

 

示例代码

static void Main(string[] args)
{
    string _ip = "10.119.135.247";
    int _port = 5000;
    string command = "<call,1>";

    //主机名
    Console.WriteLine("Host name is " + Dns.GetHostName());

    //设置IP和端口号
    IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(_ip), _port);

    //定义网络类型,数据连接类型和网络协议UDP
    Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

    // IPAddress.Any:提供一个 IP 地址,指示服务器应侦听所有网络接口上的客户端活动。此字段为只读。
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint Remote = (EndPoint)sender;

    //对于不存在的IP地址,100毫秒后解除阻塞模式限制
    server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100);

    byte[] data = new byte[1024];
    data = Encoding.ASCII.GetBytes(command);
    // 将字节数据发送到终结点
    server.SendTo(data, data.Length, SocketFlags.None, ipep);
    data = new byte[1024];
    int recv = server.ReceiveFrom(data, ref Remote);
    Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));

    // 持续接收数据知道终止符出现
    // 本例中的终止符是“<call,ok>”
    string info = String.Empty;
    while (info.ToLower() != "<call,ok>")
    {
        recv = server.ReceiveFrom(data, ref Remote);
        info = Encoding.ASCII.GetString(data, 0, recv);
        Console.WriteLine(info);
    }
    server.Close();
}

 

运行结果

posted @ 2013-01-18 14:32  数据狐  阅读(475)  评论(0编辑  收藏  举报