【发布时间】:2012-01-22 10:21:15
【问题描述】:
在这里,我正在解决有关服务器和客户端如何在机器上工作的理论问题。我知道所有 NET 进程,但我缺少一些关于代码的东西。我找不到与此相关的内容。
我在 Visual C# 2008 中编写代码,我将常规 TCPClient / TCPListener 用于 2 个不同的项目:
项目1(客户)
Project2(服务器)
我的问题可能就这么简单:
1-> 关于服务器如何接收数据,事件处理程序可能吗? 在我的第一个服务器代码中,我曾经制作过这个循环:
while (true)
{
if (NetworkStream.DataAvailable)
{
//stuff
}
Thread.Sleep(200);
}
我认为这是一种控制来自服务器的传入数据的糟糕方法。但是服务器始终准备好接收数据。
我的问题:有什么像...? ->
AcceptTcpClient();
我想要一个等待直到发生某些事情的处理程序,在这种情况下是一个特定的套接字数据接收。
2-> 通用网络 I/O 方法。
问题是(除了我是菜鸟)是如何处理多个数据写入。 如果我过去在一个字节数组中发送大量数据,如果我发送更多数据,发送可能会中断。所有数据都已加入,接收时会发生错误。我想处理多个写入发送和接收。
这可能吗?
【问题讨论】:
-
1)
NetworkStream.Read(buffer,...,...)是一个阻塞调用。你不需要那个奇怪的while循环。 2)the sending can break if I send more data。不,您可以安全地使用NetworkStream.Write(buffer,...,...)
标签: c# event-handling client networkstream