c#异步socket
2015-08-29 00:20
375 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace server { class Program { //服务端buffer为4字节 static byte[] buffer = new byte[1024]; static string Json = ""; static int connt = 0; static void Main(string[] args) { Console.WriteLine("[Server]"); try { Socket socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socketServer.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4444)); socketServer.Listen(int.MaxValue); Console.WriteLine("服务端已启动,等待连接..."); //接收连接 Socket ts = socketServer.Accept(); Console.WriteLine("客户端已连接"); //开始异步接收 ts.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), ts); Console.WriteLine(Json); Console.WriteLine(Convert.ToString(connt)); Console.ReadKey(); } catch (Exception e) { Console.WriteLine(e.Message); } } static void ReceiveCallback(IAsyncResult result) { Socket ts = (Socket)result.AsyncState; ts.EndReceive(result); result.AsyncWaitHandle.Close(); Console.WriteLine("收到消息"); Json += Encoding.ASCII.GetString(buffer); //清空数据,重新开始异步接收 buffer = new byte[buffer.Length]; connt += 1; ts.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), ts); } } }
client
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace client { class Program { static void Main(string[] args) { Console.WriteLine("[Client]"); try { Socket socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socketClient.Connect(IPAddress.Parse("127.0.0.1"), 4444); Console.WriteLine("发送消息:"); System.IO.StreamReader sr = new System.IO.StreamReader(@"C:\1.txt"); string sendStr = sr.ReadLine(); //获取发送内容 while (true) { Console.WriteLine("发送消息:"); //同步发送数据 socketClient.Send(Encoding.ASCII.GetBytes(sendStr)); } } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine("按任意键退出"); Console.ReadKey(); } } } }
相关文章推荐
- C# List<T>中Select List Distinct()去重复
- EF性能优化(C# 版 潘鹏)
- C# ListView用法详解
- C# 统计代码时间
- c# AE 闪烁和定位
- C#读取Excel2007的文件
- C#操作Excel总结
- C# PC端读取INI文件处理
- C#如何通过反射获取属性值
- c# 多线程编程
- flex与C# Socket通信
- 零基础学习.NET平台和Csharp编程开发
- C#IISRESET服务
- c#线程同步
- C#调用微软自带的计算器、记事本等软件
- C#调用微软自带的计算器、记事本等软件
- c#模拟请求获取与设置cookies
- C#线程篇---Task(任务)和线程池不得不说的秘密(5)
- C# Socket通信
- C# ZedGraph 控件各属性以及示例