zoukankan      html  css  js  c++  java
  • C# Udp Socket例子

    服务器端:

    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 ();            
            }


        }

    }
  • 相关阅读:
    bzoj 1084: [SCOI2005]最大子矩阵
    Python之深浅拷贝
    2,版本控制git --分支
    1,版本控制git--仓库管理
    python-openpyxl操作excel
    ansible-3
    ansible-2
    ansible-1
    celery
    6,MongoDB 之 Array Object 的特殊操作
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/1307622.html
Copyright © 2011-2022 走看看