国产探花免费观看_亚洲丰满少妇自慰呻吟_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,希望能多大家有所幫助!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 花莲市| 巴塘县| 江口县| 黔东| 中西区| 栖霞市| 通州区| 太康县| 吕梁市| 天长市| 浦东新区| 云南省| 根河市| 东台市| 绍兴县| 资溪县| 平果县| 崇左市| 黄大仙区| 湟中县| 叙永县| 登封市| 阜阳市| 宜阳县| 德江县| 千阳县| 镶黄旗| 依安县| 马山县| 绿春县| 共和县| 且末县| 宜兴市| 泾源县| 拉萨市| 汝南县| 巫山县| 宝坻区| 临江市| 揭西县| 尼木县|