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,到此为止,客户端代码已经完成,调试的时候先启动服务端,然后启动客户端

.net平台下socket异步通讯的更多相关文章

  1. .net平台下socket异步通讯(代码实例)

    你应该知道的.net平台下socket异步通讯(代码实例) 1,首先添加两个windows窗体项目,一个作为服务端server,一个作为客户端Client 2,然后添加服务端代码,添加命名空间,界面上 ...

  2. 你应该知道的.net平台下socket异步通讯(代码实例)

    1,首先添加两个windows窗体项目,一个作为服务端server,一个作为客户端Client 2,然后添加服务端代码,添加命名空间,界面上添加TextBox控件 using System.Net; ...

  3. C#上位机之—WinForm实现Socket异步通讯示例

    工作中常用到的一些知识点,总是用完就忘,第一次尝试用博客记录下来,以备后用: Socket通讯,Socket(套接字)是基于TCP/IP通讯方式的封装好的类,调用时需要添加下面的服务引用: using ...

  4. c++Socket 异步通讯

    在网络通讯中,由于网络拥挤或一次发送的数据量过大等原因,经常会发生交换的数据在短时间内不能传送完,收发数据的函数因此不能返回,这种现象叫做阻塞. Winsock对有可能阻塞的函数提供了两种处理方式:阻 ...

  5. Socket异步通讯

    1.可以通过多线程来解决(一会补上) 2.Socket在tcp/udp两种通信协议下的异步通信: 基于TCP的异步通信: BeginAccept方法和endeaccept方法 包含在System.Ne ...

  6. C# socket异步通讯

    Server: using System; using System.Net; using System.Net.Sockets; using System.Text; namespace TCP_S ...

  7. .net 平台下, Socket通讯协议中间件设计思路(附源码)

    .net 平台下,实现通讯处理有很多方法(见下表),各有利弊: 序号 实现方式 特点 1 WCF 优点:封装好,方便.缺点:难学,不跨平台 2 RocketMQ,SuperSocket等中间件 优点: ...

  8. .net平台下C#socket通信(中)

    上篇.net平台下C#socket通信(上)介绍了socket通信的基本原理及最基本的通信方式.本文在此基础上就socket通信时经常遇到的问题做一个简单总结,都是项目中的一些小问题,拿来此处便于下次 ...

  9. .net平台下C#socket通信(转)

    上篇.net平台下C#socket通信(上)介绍了socket通信的基本原理及最基本的通信方式.本文在此基础上就socket通信时经常遇到的问题做一个简单总结,都是项目中的一些小问题,拿来此处便于下次 ...

随机推荐

  1. php 生成正态分布随机数

    这个函数比较冷门,连官方文档都不太齐全 function stats_rand_gen_normal(av, sd);   //av是平均值,sd是标准偏差 使用这个函数需要,安装pecl stats ...

  2. jQuery 的属性操作方法

    jQuery 属性操作方法 下面列出的这些方法获得或设置元素的 DOM 属性. 这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html(). 方法 描述 addClass() 向匹配的 ...

  3. C#实现SOAP调用WebService

    最近写了一个SOA服务,开始觉得别人拿到我的服务地址,然后直接添加引用就可以使用了,结果"大牛"告知不行. 让我写一个SOAP调用服务的样例,我有点愣了,因为没做过这方面的,于是搞 ...

  4. 动态生成修改aspx文件

    using System.IO; using System.Text;/// <summary>/// SCPage 的摘要说明 修改 aspx 和aspx.cs文件/// </su ...

  5. mysql出现Got error 28 from storage engine错误

    今天晚上碰到app数据库出错Got error 28 from storage engine 服务程序出现这样的错误 Sql.Data---Error writing file '/tmp/ML2ig ...

  6. 搭建PHP开发环境 apache+MySQL+PHP 安装phpMyAdmin模块

    该博文参考的资料来源于: http://wenku.baidu.com/view/0e4c569ddd3383c4bb4cd267.html http://www.cnblogs.com/pharen ...

  7. 基于前端javascript的搜索功能

    发表于 2013/11/07 当在数据量不是很大,而且没有后端对应的功能接口的时候,一些简单的搜索功能基本上是前端去实现的,正好最近用到,写了一个,贴出来和大家分享: 功能描述: 按下键盘后及时搜索条 ...

  8. 在Windows下使用MinGW静态编译Assimp

    使用MinGW静态编译Assimp 到了5月份了,没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要解说怎样在Windows下使用MinGW静态编译Assimp. Assimp是眼下比較 ...

  9. Android开发_SharedPreferences

    SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使 ...

  10. [Webpack 2] Validate your Webpack config with webpack-validator

    It’s quite common to make a mistake while developing your webpack configuration. A simple typo can c ...