你应该知道的.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,希望能多大家有所帮助!

 
 
 
 

.net平台下socket异步通讯(代码实例)的更多相关文章

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

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

  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. C# socket异步通讯

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

  6. Socket异步通讯

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

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

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

  8. 网络编程之Socket代码实例

    网络编程之Socket代码实例 一.基本Socket例子 Server端: # Echo server program import socket HOST = '' # Symbolic name ...

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

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

随机推荐

  1. UVa 11790 - Murcia's Skyline

    称号:给你一个行长度的建设和高度,我们祈求最长的和下降的高度. 分析:dp,最大上升子. 说明:具有长度,不能直接优化队列单调. #include <iostream> #include ...

  2. 添加和删除行的能力table(能够编辑的表的内容)

    页面文件 <html> <head> <meta http-equiv="Content-Type" content="text/html; ...

  3. 同一个ASP.NET页面放置多个UpdatePanel分别刷新的解决办法。.

    原文:同一个ASP.NET页面放置多个UpdatePanel分别刷新的解决办法.. ScriptManager添加EnablePartialRending属性 <asp:ScriptManage ...

  4. BroadcastReceiver.PendingResult类别

    java.lang.Object android.content.BroadcastReceiver.PendingResul 类概述 状态的结果正在等待一个广播接收器.在BroadcastRecei ...

  5. OJ提交题目中的语言选项里G++与C++的区别(转载)

    原文链接:http://blog.polossk.com/201405/c-plus-plus-g-plus-plus G++? 首先更正一个概念,C++是一门计算机编程语言,G++不是语言,是一款编 ...

  6. C# 反射技术应用

    反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...

  7. oracle_查询Oracle正在执行和执行过的SQL语句

    ---正在执行的select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT  from v$session a, v$sqlarea b where a.s ...

  8. 关于微软公有云Azure会计标准

    前几年.中国的云计算项目往往搞成了房地产项目.大搞形"象project",没有实质性的内容.云计算老总成了房地产大老板,国内业界是在胡闹! 现今,世纪互联与微软(中国)联手搞公有云 ...

  9. JAVA异常处理、常用类、反射、集合

    异常 异常:在Java中是指被一个方法抛出的对象. 分类:检查异常.运行时异常.错误 运行时异常(uncheckd):RuntimeException和其子类 检查异常(checkd/搜检异常):指E ...

  10. The Swift Programming Language-官方教程精译Swift(3)基本运算符

    运算符是检查, 改变, 合并值的特殊符号或短语. 例如, 加号 + 把计算两个数的和(如 let i = 1 + 2). 复杂些的运行算包括逻辑与&&(如 if enteredDoor ...