C# Udp Socket例子

来源:互联网 发布:400外呼软件 编辑:程序博客网 时间:2024/05/18 20:33

服务器端:

 

using System;using System.Collections.Generic;using System.Text;using System.Net;using System.Net.Sockets;namespace UDPServer{    class Program    {        static void Main(string[] args)        {            int recv;            byte[] data = new byte[1024];             //构建TCP 服务器            //得到本机IP,设置TCP端口号                     IPEndPoint ipep = new IPEndPoint(IPAddress.Any , 8001);            Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram , ProtocolType.Udp);            //绑定网络地址            newsock.Bind(ipep);            Console.WriteLine("This is a Server, host name is {0}",Dns.GetHostName());            //等待客户机连接            Console.WriteLine("Waiting for a client");            //得到客户机IP            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);            EndPoint Remote = (EndPoint)(sender);            recv = newsock.ReceiveFrom(data, ref Remote);            Console .WriteLine ("Message received from {0}: ", Remote.ToString ());            Console .WriteLine (Encoding .ASCII .GetString (data ,0,recv ));            //客户机连接成功后,发送欢迎信息            string welcome = "Welcome ! ";            //字符串与字节数组相互转换            data  = Encoding .ASCII .GetBytes (welcome );            //发送信息            newsock .SendTo (data ,data.Length ,SocketFlags .None ,Remote );            while (true )            {                data =new byte [1024];                //发送接受信息                recv =newsock.ReceiveFrom(data ,ref Remote);                Console .WriteLine (Encoding .ASCII .GetString (data ,0,recv));                newsock .SendTo (data ,recv ,SocketFlags .None ,Remote );            }        }    }}


 

客户端:

 

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Sockets;namespace UDPClient{    class Program    {        static void Main(string[] args)        {            byte[] data = new byte[1024];            string input ,stringData;            //构建TCP 服务器            Console.WriteLine("This is a Client, host name is {0}", Dns.GetHostName());            //设置服务IP,设置TCP端口号            IPEndPoint ipep = new IPEndPoint(IPAddress .Parse ("127.0.0.1") , 8001);            //定义网络类型,数据连接类型和网络协议UDP            Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);            string welcome = "Hello! ";            data = Encoding.ASCII.GetBytes(welcome);            server.SendTo(data, data.Length, SocketFlags.None, ipep);            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);            EndPoint Remote = (EndPoint)sender;            data = new byte[1024];            //对于不存在的IP地址,加入此行代码后,可以在指定时间内解除阻塞模式限制            //server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100);            int recv = server.ReceiveFrom(data, ref Remote);            Console.WriteLine("Message received from {0}: ", Remote.ToString());            Console.WriteLine(Encoding .ASCII .GetString (data,0,recv));            while (true)            {                input = Console .ReadLine ();                if (input =="exit")                    break ;                server .SendTo (Encoding .ASCII .GetBytes (input ),Remote );                data = new byte [1024];                recv = server.ReceiveFrom(data, ref Remote);                stringData = Encoding.ASCII.GetString(data, 0, recv);                Console.WriteLine(stringData);            }            Console .WriteLine ("Stopping Client.");            server .Close ();                    }    }}


摘自:http://www.cnblogs.com/zhangpengshou/archive/2008/10/09/1307622.html

原创粉丝点击