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"), );//IP地址和端口号
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//定义socket
socket.Bind(epServer);//绑定
socket.Listen();//监听
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[];
int i = socket.Receive(bytes);
cmdstr = Encoding.UTF8.GetString(bytes, , 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 != )
{
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"), );//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,希望能多大家有所帮助!

你应该知道的.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. Socket异步通讯

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

  5. c++Socket 异步通讯

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

  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. 【extjs6学习笔记】1.7 初始:加载第三方库

    https://www.sencha.com/blog/integrating-ext-js-with-3rd-party-libraries-2/ Introduction Ext JS provi ...

  2. python 之 re 模块

    re模块下的常用方法 1.findall:返回所有满足匹配条件的结果,放在列表里. import re # 查找数字 result = re.findall('\d+','nizhidao 123 w ...

  3. jsp四大作用域之Application

    <%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding=& ...

  4. servlet forword服务器端跳转

    web.xml中配置servlet的映射和访问路径 <?xml version="1.0" encoding="UTF-8"?><web-ap ...

  5. SAP CRM和C4C的客户主数据修改历史记录查询

    SAP CRM 随便修改一个字段,比如给Search Term维护值"webpack": Change History assignment block里显示出了这条修改记录: 根 ...

  6. Netweaver和CloudFoundry是如何运行Web应用的?

    Netweaver 在Jerry的微信公众号文章SAP Fiori应用的三种部署方式里提到SAP Fiori应用以BSP应用的方式部署在ABAP Front-End Server上.那么这些BSP应用 ...

  7. hdu 5093 Battle ships (二分图)

    二分图最大匹配问题 遇到冰山就把行列拆成两个部分.每个部分x也好,y也好只能匹配一次 图画得比较草,将就着看 横着扫一遍,竖着扫一遍,得到编号 一个位置就对应一个(xi,yi)就是X集到Y集的一条边, ...

  8. GCD 代码以及GCD思想

    # 欧几里得算法 现在,我们来学习一下欧几里得算法. 欧几里得算法又称辗转相除法,主要用于算求两个正数之间的最大公约数.对于最大公约数这个名称,其英文名称为(Greatest Common Divis ...

  9. unbuntu&vim&Kali的各种小知识

    1. vmware workstation 15.0.0 2.ubuntu-18.10-desktop  使用网络地址转换 VMware workstation 1.ctrl+alt 返回  unbu ...

  10. 2018.4.16 Java多线程实现龟兔赛跑

    龟兔赛跑(通过多线程来实现 里面的具体方法) TT.java package com.lanqiao.demo3; /** * 乌龟 * @author Administrator * */ publ ...