国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

你應該知道的.net平臺下socket異步通訊(代碼實例)

2019-11-17 03:17:00
字體:
來源:轉載
供稿:網友

你應該知道的.net平臺下socket異步通訊(代碼實例)

1,首先添加兩個windows窗體項目,一個作為服務端server,一個作為客戶端Client

2,然后添加服務端代碼,添加命名空間,界面上添加TextBox控件

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

3,FormLoad方法添加代碼

PRivate void Form1_Load(object sender, EventArgs e)        {            ipEndPoint epServer = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 7878);//IP地址和端口號            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//定義socket            socket.Bind(epServer);//綁定            socket.Listen(10);//監聽            socket.BeginAccept(new AsyncCallback(RecVing), socket);//異步接收,回調方法為RecVing        }

4,添加回調方法代碼

private void RecVing(IAsyncResult rec_socket)        {            string cmdstr = "";            Socket sc = (Socket)rec_socket.AsyncState;            Socket socket = sc.EndAccept(rec_socket);            byte[] bytes = new byte[1024];            int i = socket.Receive(bytes);            cmdstr = Encoding.UTF8.GetString(bytes, 0, i);            showstrs(cmdstr);            sc.BeginAccept(new AsyncCallback(RecVing), sc);        }

5,添加showstrs方法,

定義委托private delegate void shixudong_invoke(string invokefun);

private void showstrs(string recv_strs)        {            if (recv_strs.Length != 0)            {                if (this.InvokeRequired)                {                    shixudong_invoke invoke = new shixudong_invoke(showstrs);                    this.Invoke(invoke, (object)recv_strs);                }                else                {                    textBox1.Text = recv_strs;                                    }            }        }

6,到此為止,服務端已經添加完畢

7,客戶端代碼,首先跟服務端一樣,添加命名空間,在界面上添加button事件

private void button1_Click(object sender, EventArgs e)        {            IPEndPoint IPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 7878);//IP,端口號            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            socket.BeginConnect(IPEndPoint, new AsyncCallback(Sending), socket);//回調方法Sending        }

8,添加回調方法,代碼如下

private void Sending(IAsyncResult rec_socket)        {            Socket socket = (Socket)rec_socket.AsyncState;            try            {                if (socket.Connected)                {                    byte[] msgBuff = Encoding.UTF8.GetBytes(textBox1.Text);                    socket.Send(msgBuff);                    //socket.Accept();                }                else                {                    Console.WriteLine("Error!", "Error!");                }            }            catch            {                Console.WriteLine("Error!", "Error!");            }        }

9,到此為止,客戶端代碼已經完成,調試的時候先啟動服務端,然后啟動客戶端

10,運行截圖如下,點擊按鈕前,在文本框中輸入shixudong

11,點擊按鈕之后截圖如下

測試成功,有問題的可以聯系我shixudong3@yeah.net,希望能多大家有所幫助!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 济阳县| 霍城县| 东莞市| 呼和浩特市| 灵山县| 望奎县| 石林| 江安县| 岳池县| 和田市| 高安市| 泗阳县| 安新县| 特克斯县| 开化县| 岱山县| 侯马市| 峡江县| 梅州市| 鲁山县| 黄大仙区| 双江| 崇礼县| 江川县| 汉中市| 普安县| 宝鸡市| 青神县| 合阳县| 天全县| 滁州市| 南投市| 鄂尔多斯市| 亳州市| 富蕴县| 宝坻区| 连城县| 鲁甸县| 儋州市| 会东县| 漯河市|