首页 > 编程语言 >C# NamedPipe传输测试

C# NamedPipe传输测试

时间:2024-03-01 17:23:18浏览次数:31  
标签:Task Dump C# NamedPipe await 传输 client using new

CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;

Task tserver = Task.Run(() => 
{
	NamedPipeServer server = new NamedPipeServer();
	server.dowork(token);	
});

Task tclient = Task.Run(() => 
{
	NamedPipeClient client = new NamedPipeClient();
	client.dowork();
});

await Task.Delay(1000);
cts.Cancel();
await Task.WhenAll(tserver,tclient);
await Task.Delay(2000);


class NamedPipeServer
{
	string pipename = "testpipe";
	public async Task dowork(CancellationToken token)
	{
		try
		{
			using(NamedPipeServerStream serverPipe = new NamedPipeServerStream(pipename, PipeDirection.InOut))
			{
				"Server:  Wating for client connection...".Dump();
				await serverPipe.WaitForConnectionAsync(token);
				
				"Server:  Client connected".Dump();
				int cnt = 0;
				using(StreamReader reader = new StreamReader(serverPipe))
				using(StreamWriter writer = new StreamWriter(serverPipe))
				{
					while (true)
					{
						string receivedMessage = await reader.ReadLineAsync();
						if(receivedMessage == null)
						{
							cnt++;
							if(cnt > 10) break;
						}
						else
						{
							$"Server:  Received message:  {receivedMessage}".Dump();
						}
						await Task.Delay(1);
					}
				}
			}
		}
		catch
		{			
		}
	}
}


class NamedPipeClient
{
	string pipename = "testpipe";
	public async Task dowork()
	{
		try
		{
			using(NamedPipeClientStream client = new NamedPipeClientStream(".",pipename, PipeDirection.InOut))
			{
				"Client: Connecting to server".Dump();
				await client.ConnectAsync();
				"Client: Connected to server".Dump();
				
				using(StreamWriter writer = new StreamWriter(client))
				{
					string sendbuff = "hello world";
					await writer.WriteLineAsync(sendbuff);
					"Client: Sending to Server".Dump();
					await writer.FlushAsync();					
				}				
			}			
		}
		catch
		{
		}		
	}
}

标签:Task,Dump,C#,NamedPipe,await,传输,client,using,new
From: https://www.cnblogs.com/senya8030/p/18047544

相关文章

  • Linux screen命令的用法
    当谈到在Linux终端中管理会话时,screen是一个非常有用的工具。它允许你在单个终端会话中创建多个虚拟终端,从而可以同时运行多个任务,即使在断开与服务器的连接后也可以保持这些会话。下面是关于screen命令的详细介绍:1.安装和启动screen:通常,screen已经预装在大多数Linux发行版......
  • 去除tinymce中粘贴的样式
    import"tinymce/plugins/paste";tinymce.init({...其他配置,plugins:["paste"],paste_auto_cleanup_on_paste:true,paste_remove_styles:true,paste_remove_styles_if_webkit:true,paste_strip_class_attributes:true,paste_as_tex......
  • 【HMS Core】应用内支付如何退款
    ​【问题描述】应用内支付如何退款? 【解决方案】1、如果您需要帮助用户进行退款(订单退款)操作,建议提单咨询https://developer.huawei.com/consumer/cn/support/feedback/#/2、如果订阅想退款的,可以直接调用撤销订阅或者返还订阅费用来给用户退款。​​https://developer.h......
  • 实战2-__jsl_clearance_s 生成
    目标网站aHR0cHM6Ly96cnp5aGdoai5oZWZlaS5nb3YuY24veHd6eC9ic2R0L2luZGV4Lmh0bWw=1.简单介绍加速乐是创宇推出的一款在线免费网站CDN加速、网站安全防护平台,致力于系统化解决网站访问速度过慢及网站反黑客问题加速乐三步骤a.第一次请求,响应码521,服务器返回的Cookie中携带......
  • 【HMS Core】应用内支付成功后,返回结果验签失败
    ​【问题描述】应用内支付成功后,返回结果验签失败 【解决方案】验签失败可以从以下几点进行逐一排查1.签名算法是否匹配(可以通过获取getSignatureAlgorithm来验证目前使用的签名算法)​2.签名公钥是否正确​确保公钥获取正确,签名算法如果打开了SHA256WithRSA/PSS,则建议......
  • gmail.com谷歌邮箱修改手机号,辅助号码还显示老号码
    前言全局说明2023年谷歌强制要求开启两部验证,否则代收邮箱就不能正常使用了1、gmail.com谷歌邮箱修改手机号,辅助号码还显示老号码?根据网友的说法猜测,应该是你修改了手机号,gmail还不能完全判定你是邮箱主人。所以留着辅助号码,防止真正的邮箱主人找回用。2、多长时间更新......
  • cnpm i报错 cpm:无法加载文件c:wsers vdministratorpata Roaming mpmcnpm.ps1,因为在
    cpm:无法加载文件c:wsersvdministratorpataRoamingmpmcnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅htps:/g.microsoft.con/fvlink/?LinkID=135170中的aboutExecutionPolicies。所在位置行:1字符:1+cnpmi.+CategoryInfoSecurityError:(:)[],PsSecuri......
  • VSCode编写多线程程序碰到 mutex 和 thread 未定义的报错问题
    硬件:ThinkBook16G5+IRH系统:Win11家庭中文版22H2如果碰到在线安装MinGW-w64失败的问题可以参考以下链接在线安装MinGW-w64失败下载mingw-std-threads文件夹目前MinGWGCC缺少标准的C++11线程类,该库补充实现有关thread和mutex的内容https://github.com/mega......
  • c#变量
    赋值int为变量的类型abc为名称100为初始值这就是一个基础赋值名称不能重复会报错优先使用靠前的赋值Console.ReadKey();//当输入下一个任意键时才开始执行下面的命令,所以有暂停的作用一般放在结尾......
  • Graph Contrastive Learning with Adaptive Augmentation 论文阅读笔记
    Abstract​ 尽管图CL方法得到了繁荣的发展,但图增强方案的设计——CL中的一个关键组成部分——仍然很少被探索。我们认为,数据增强方案应该保留图的内在结构和属性,这将迫使模型学习对不重要的节点和边缘的扰动不敏感的表示。然而,现有的方法大多采用统一的数据增强方案,如统一丢弃边......