c# - 读取和写入多个名为管道c#的消息的问题
问题描述
我正在使用 c# 在命名管道上练习我制作了客户端和服务器控制台应用程序,但问题是当我从客户端发送第一条消息时,服务器接收并输出它。但是第二条消息,它不会独立输出,而是覆盖第一条消息的第一个字符,例如 Message 1 : Client : NameNameName | 服务器:NameNameName 消息 2:客户端:堆栈 | 服务器:StackameName 这是代码 客户端
using (NamedPipeClientStream pipe = new NamedPipeClientStream(".","Intern", PipeDirection.InOut))
{
pipe.Connect();
if (pipe.IsConnected)
{
/* StreamReader sr = new StreamReader(pipe);
StreamWriter sw = new StreamWriter(pipe);
sw.AutoFlush = true;
sw.WriteLine("Some info from client");*/
Console.WriteLine("Connected to server");
string msg = "";
do
{
// if (!pipe.IsConnected) pipe.Connect();
Console.Write(" MESSAGE = ");
msg= Console.ReadLine();
pipe.WriteAsync(Encoding.UTF8.GetBytes(msg), 0, msg.Length);
pipe.FlushAsync();
} while (msg != "quit");
pipe.Close();
}
Console.Read();
服务器 :
NamedPipeServerStream pipe = new NamedPipeServerStream("Intern", PipeDirection.InOut);
StreamReader sr = new StreamReader(pipe);
StreamWriter sw = new StreamWriter(pipe);
pipe.WaitForConnection();
Console.WriteLine("Connected ! ");
byte[] bufferr = new byte[1024];
string delta = "";
string msg = "";
int k = 0;
List<byte> msgList= new List<byte>();
while (pipe.IsConnected)
{
pipe.Flush();
bufferr.Initialize();
msgList.Clear();
msg = "";
pipe.ReadAsync(bufferr, 0, bufferr.Length);
while (bufferr[k]!='\0')
{
msgList.Add(bufferr[k]);
Console.WriteLine("Character : " + bufferr[k]);
k++;
}
byte[] msgE = new byte[msgList.Count];
msgE = msgList.ToArray();
k = 0;
delta = Encoding.UTF8.GetString(msgE);
Console.WriteLine(delta);
msg = "";
k = 0;
}
Console.Read();
}
如您所见,我尝试了不同的方法来删除第一条消息,但它仍然通过缓冲区流式传输,我不知道为什么如果有人可以为我提供好的和完整的 c# 参考书,我在互联网上找不到特别是关于管道的信息 非常好感谢^^谢谢你:)
解决方案
推荐阅读
- android - 安卓包错误:
标签不是有效的 Android 包名称:'[ios:com.appname.appname, android:com.appname.tab] - r - 将脚本定义路径添加到 .Rprofile
- json - KotlinX 内置类的序列化
- ios - 不正确的 RealityKit generateConvex(from mesh: ) collider
- python - 将 pandas 中的 Topic-name 和 Description 转换为 Topic-Name、单词和频率
- python - 使用 pandas rd.sheet_name 显示所有工作表名称不起作用
- python - 我可以根据模型类中的布尔值更改外键中的列表吗?
- python - Python 检查互联网连接以进行抓取
- reactjs - 反应传递数据或添加到状态错误
- python - 将具有几个日期的数据帧转换为完整日期数据帧