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


        }

    }

  • 相关阅读:
    Power Apps 创建响应式布局
    SharePoint Online 软件边界限制
    Power Apps 中人员选择器的使用
    Power Apps 中修改 SharePoint Online 数据
    Power Apps 中调用 Automate 工作流
    如何查看你的Office 365 账号的订阅
    Microsoft Teams 中嵌入SharePoint Online 页面
    SharePoint Online 触发Outlook邮件内审批
    Linux查看实时网卡流量的几种方式
    Linux性能优化和监控系列(三)——分析Memory使用状况
  • 原文地址:https://www.cnblogs.com/easypass/p/2126267.html
Copyright © 2020-2023  润新知