源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

.net的socket异步通讯示例分享

  • 时间:2021-03-09 09:16 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:.net的socket异步通讯示例分享
1、首先添加两个windows窗体项目,一个作为服务端server,一个作为客户端Client 2、然后添加服务端代码,添加命名空间,界面上添加TextBox控件
[u]复制代码[/u] 代码如下:
using System.Net; using System.Net.Sockets;
3、FormLoad方法添加代码
[u]复制代码[/u] 代码如下:
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、添加回调方法代码
[u]复制代码[/u] 代码如下:
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);
[u]复制代码[/u] 代码如下:
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事件
[u]复制代码[/u] 代码如下:
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、添加回调方法,代码如下
[u]复制代码[/u] 代码如下:
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 [img]http://files.jb51.net/file_images/article/201403/20140320151442.jpg?2014220151510[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部