概述
高性能Socket通讯,入门
服务端
采用控制台程序
代码
namespace Server
{
//继承于 ServerHandlerBase
//重载 SessionReceive,用于处理客户端发过来的数据
class Program : ServerHandlerBase
{
private static IServer server;
public static void Main(string[] args)
{
//创建服务端
server = SocketFactory.CreateTcpServer<Program>();
//定义服务端的端口
server.Options.DefaultListen.Port =9090;
//server.Options.DefaultListen.Host = "127.0.0.1";
//打开服务器
server.Open();
//保持服务端一直打开
Console.Read();
}
/// <summary>
/// 重载SessionReceive
/// </summary>
/// <param name="server"></param>
/// <param name="e"></param>
public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
{
var pipeStream = e.Stream.ToPipeStream();
//通过管道读取客户端的数据
var value = pipeStream.ReadToEnd();
// 这里可以进行相关的业务处理
//将服务端需要返回给客户端的数据回传给客户端,这里使用的是读取客户端的值,直接给客户返回出去
pipeStream.Write("服务端的值:" + value);
pipeStream.Flush();
//Console.WriteLine("有新的响应" + DateTime.Now.ToString());
base.SessionReceive(server, e);
}
}
}
说明:
- 使用Nuget安装Beetlx
- 创建program 客户端程序
- 调整Programe 继承于 ServerHandlerBase
- 配置服务端的端口号,以及启动的时候打开网络接受程序
- 重载 SessionReceive ,这个方法是用于与客户端交互的通道,可以得到客户端响应的内容
客户端 Client
代码
namespace Client
{
class Program
{
static void Main(string[] args)
{
//向服务端进行发送数据
var client = SocketFactory.CreateClient<AsyncTcpClient>("127.0.0.1", 9090);
//接受服务端的方法,输出客户端的发给服务端的内容
client.DataReceive = (o, e) => {
var pipestream = e.Stream.ToPipeStream();
var line = pipestream.ReadLine();
Console.WriteLine($"{DateTime.Now} {line}");
};
// 客户端输入,循环读取客户输入的内容
while (true)
{
Console.Write("Enter Name:");
var line = Console.ReadLine();
//向服务端进行发送数据
client.Stream.ToPipeStream().WriteLine(line);
client.Stream.Flush();
}
}
}
}
- 说明
- Nuget安装Beetlx
- 使用SocketFactory 来创建Client客户端 ,
- 定义DataReceive,来获取服务端的传递过来的内容
- 使用 client.Stream.ToPipeStream.WriteLine 写入字符串 并使用 flush来进行推送!