亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

c#實現簡單控制臺udp異步通信程序示例

2020-01-24 02:42:07
字體:
來源:轉載
供稿:網友

實現客戶端發送請求,服務器端響應機制

UDP客戶端代碼

復制代碼 代碼如下:

using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace Client
{
    class Program
    {
        //客戶端 Socket對象
        private static Socket clientSocket;
        //服務器端 終點
        private static EndPoint epServer;
        //接收數據的字符數組
        private static byte[] receiveData;

        public static void Main(string[] args)
        {
            //客戶端Socket對象實例化
            clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            //設置服務器端IP地址和對應端口
            IPEndPoint server = new IPEndPoint(IPAddress.Parse("192.168.1.165"), 11000);
            //實例化服務器端 終點
            epServer = (EndPoint)server;
            string msg;     //要發送的消息
            byte[] sendData;    //要發送的字符串
            while (true) {
                msg = Console.ReadLine();   //輸入要發送的消息
                if (msg == "exit") break;   //當輸入“exit”時,退出客戶端程序
                //將消息通過ASCII編碼轉換為字符數組,
                //如果要發送漢字或其他特殊符號,可以采用UTF-8
                sendData = Encoding.ASCII.GetBytes(msg);   
                //開始異步發送消息
                //參數:sendData           要發送的數據
                //參數:0:                 要發送數據的起始位置
                //參數:sendData.Length:   要發送數據的字節數
                //參數:SocketFlags.None:  按位組合方式
                //參數:epServer:          接收方設備(包含IP和端口)
                //參數:new AsyncCallback(SendData):   委托
                //參數:null:          請求的狀態信息
                clientSocket.BeginSendTo(sendData, 0, sendData.Length, SocketFlags.None,
                    epServer, new AsyncCallback(SendData), null);
                //實例化接收數據的字符數組
                //若在聲明時已經初始化,此處依然要進行重新初始化
                //當上次接收的數據長度大于本次,則該數組里包含上次接收的殘留數據
                //比如:上次接收“你個小逗逼”。本次接收“開玩笑”。
                //則數組中的數據為:“開玩笑逗逼”。
                receiveData = new byte[1024];
                //開始異步接收消息
                //參數部分與異步發送部分對應,基本一致
                clientSocket.BeginReceiveFrom(receiveData, 0, receiveData.Length, SocketFlags.None,
                    ref epServer, new AsyncCallback(ReceiveData), null);
            }
        }

        //異步發送消息的委托函數
        private static void SendData(IAsyncResult iar)
        {
            //完成異步發送
            clientSocket.EndSend(iar);
        }

        //異步接收消息的委托函數
        private static void ReceiveData(IAsyncResult iar)
        {
            //完成異步接收  recv 表示接收到的字節數
            int recv = clientSocket.EndReceive(iar);
            //將接收到的數據打印出來
            Console.WriteLine("Server: " + Encoding.ASCII.GetString(receiveData, 0, recv));
        }

    }
}

UDP服務器端代碼

復制代碼 代碼如下:

using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace Server
{
    class AsyncUdpServer
    {
        //服務器端Socket對象
        private static Socket serverSocket;
        //接收數據的字符數組
        private static byte[] receiveData = new byte[1024];

        public static void Main(string[] args)
        {
            //實例化服務器端Socket對象
            serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            //服務器端的IP和端口,IPAddress.Any實際是:0.0.0.0,表示任意,基本上表示本機IP
            IPEndPoint server = new IPEndPoint(IPAddress.Any, 11000);
            //Socket對象跟服務器端的IP和端口綁定
            serverSocket.Bind(server);
            //客戶端的IP和端口,端口 0 表示任意端口
            IPEndPoint clients = new IPEndPoint(IPAddress.Any, 0);
            //實例化客戶端 終點
            EndPoint epSender = (EndPoint)clients;
            //開始異步接收消息  接收后,epSender存儲的是發送方的IP和端口
            serverSocket.BeginReceiveFrom(receiveData, 0, receiveData.Length, SocketFlags.None,
                ref epSender, new AsyncCallback(ReceiveData), epSender);
            Console.WriteLine("Listening...");
            Console.ReadLine();
        }

        private static void SendData(IAsyncResult iar)
        {
            serverSocket.EndSend(iar);
        }

        private static void ReceiveData(IAsyncResult iar)
        {
            //客戶端的IP和端口,端口 0 表示任意端口
            IPEndPoint client = new IPEndPoint(IPAddress.Any, 0);
            //實例化客戶端 終點
            EndPoint epSender = (EndPoint)client;
            //結束異步接收消息  recv 表示接收到的字符數
            int recv = serverSocket.EndReceiveFrom(iar, ref epSender);           
            //將接收到的數據打印出來,發送方采用什么編碼方式,此處就采用什么編碼方式 轉換成字符串
            Console.WriteLine("Client:" + Encoding.ASCII.GetString(receiveData, 0, recv));
            //定義要發送回客戶端的消息,采用ASCII編碼,
            //如果要發送漢字或其他特殊符號,可以采用UTF-8           
            byte[] sendData = Encoding.ASCII.GetBytes("hello");
            //開始異步發送消息  epSender是上次接收消息時的客戶端IP和端口信息
            serverSocket.BeginSendTo(sendData, 0, sendData.Length, SocketFlags.None,
                epSender, new AsyncCallback(SendData), epSender);
            //重新實例化接收數據字節數組
            receiveData = new byte[1024];
            //開始異步接收消息,此處的委托函數是這個函數本身,遞歸
            serverSocket.BeginReceiveFrom(receiveData, 0, receiveData.Length, SocketFlags.None,
                ref epSender, new AsyncCallback(ReceiveData), epSender);
        }

    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产一区二区三区| 琪琪亚洲精品午夜在线| 国产午夜精品全部视频在线播放| 日韩av在线影视| 国内精品久久影院| 亚洲无限av看| 亚洲最大成人免费视频| 国产精品免费观看在线| 亚洲视频电影图片偷拍一区| 亚洲一区久久久| 日韩高清免费在线| 国内精品一区二区三区四区| 精品美女永久免费视频| 欧美黑人又粗大| 成人淫片在线看| 国产精品色悠悠| 亚洲人在线观看| 欧美日韩中文在线观看| 久久久亚洲欧洲日产国码aⅴ| 日韩国产高清污视频在线观看| 这里只有精品视频在线| 日韩国产激情在线| 日韩成人在线观看| 日韩一区二区三区国产| 国产日韩换脸av一区在线观看| 精品视频在线播放| 国产精品一区二区女厕厕| 色与欲影视天天看综合网| 欧美日韩国产精品一区二区三区四区| 亚洲欧美国产精品va在线观看| 中文字幕亚洲字幕| 欧美不卡视频一区发布| 欧美日韩中文字幕在线| 亚洲欧美日韩在线高清直播| 欧美日韩午夜激情| 高清日韩电视剧大全免费播放在线观看| 日韩精品欧美激情| 国产免费一区二区三区香蕉精| 国产拍精品一二三| 亚洲缚视频在线观看| 色妞欧美日韩在线| 69国产精品成人在线播放| 国产成人短视频| 久久久久久亚洲精品| 欧美性精品220| 精品国内产的精品视频在线观看| 欧美日韩精品在线| 欧美华人在线视频| 最新69国产成人精品视频免费| 欧美在线不卡区| 亚洲精品国产综合久久| 国产在线播放91| 日韩久久免费电影| 亚洲www在线观看| 亚洲高清在线观看| 日韩欧美在线视频观看| 日韩在线观看免费高清完整版| 欧美影院成年免费版| 亚洲欧美日韩中文视频| 国产欧美精品一区二区三区介绍| 久久久久久高潮国产精品视| 久久精品视频播放| 亚洲男人的天堂在线播放| 欧美性猛交xxxx乱大交| 亚洲欧美另类在线观看| 久久久www成人免费精品张筱雨| 色视频www在线播放国产成人| 国产精品久久999| 国产精品爱啪在线线免费观看| 国产99久久久欧美黑人| 日韩高清中文字幕| 欧美最猛黑人xxxx黑人猛叫黄| 久久这里只有精品视频首页| 亚洲爱爱爱爱爱| 91综合免费在线| 国产精品第100页| 国产欧美va欧美va香蕉在| 川上优av一区二区线观看| 欧美性极品xxxx做受| 欧美成人激情视频| 久久人人爽国产| 亚洲 日韩 国产第一| 亚洲第一在线视频| 亚洲一区国产精品| 97香蕉超级碰碰久久免费软件| 欧美一级在线亚洲天堂| 中文字幕精品在线| 欧美激情视频播放| 国产精品久久久久一区二区| 亚洲欧美另类在线观看| 久久视频免费在线播放| 国产精品美女久久久久av超清| 97不卡在线视频| 精品中文视频在线| 中文字幕欧美日韩va免费视频| 欧美亚洲另类视频| 欧美激情一级欧美精品| 久久精品电影网| 欧美日韩免费观看中文| 亚洲精品久久久久久久久久久久| 欧美激情精品久久久久久大尺度| 国产成人91久久精品| 国产亚洲精品久久久久久牛牛| 久久精品中文字幕免费mv| 亚洲精品美女久久| 亚洲天堂av网| 日韩精品中文字幕视频在线| 亚洲欧美日韩一区在线| 欧美专区在线观看| 亚洲高清不卡av| 深夜福利国产精品| 91香蕉国产在线观看| 精品香蕉在线观看视频一| 欧美有码在线视频| 日本精品久久久久影院| 欧美肥婆姓交大片| 久久国产精品网站| 国产视频精品一区二区三区| 韩国19禁主播vip福利视频| 日韩中文字幕在线精品| 中文字幕国产精品久久| 国产精品1234| 亚洲视频在线免费观看| 久久精品亚洲国产| 国产成人免费av电影| 中文字幕欧美日韩| 日本最新高清不卡中文字幕| 亚洲在线视频观看| 国产亚洲a∨片在线观看| 欧美超级乱淫片喷水| 久久中文精品视频| 国产精品视频网| 亚洲国产精品成人va在线观看| 欧美视频在线免费看| 久久99国产综合精品女同| 4438全国亚洲精品在线观看视频| 国产精品日韩久久久久| 亚洲欧美综合区自拍另类| 国产又爽又黄的激情精品视频| 欧美另类99xxxxx| 精品福利在线看| 久久人人爽人人爽人人片亚洲| 亚洲aa中文字幕| 久久久久九九九九| 日韩亚洲精品视频| 国产精品免费一区豆花| 久久亚洲春色中文字幕| 亚洲成人久久一区| 欧美最猛黑人xxxx黑人猛叫黄| 91禁国产网站| 欧美大尺度在线观看| 国产精品久久久久久网站| 日韩电影中文字幕av| 97色在线观看| 亚洲成人av片在线观看| 91在线观看免费高清| 日韩综合视频在线观看| 国产视频久久网| 中文字幕亚洲国产| 国产日韩在线看片| 国产精品一区二区久久国产| 亚洲国产精品va在看黑人| 中文字幕视频在线免费欧美日韩综合在线看| 欧美日韩亚洲91|