草庐IT

m_NetworkStream

全部标签

c# - TCP 套接字/NetworkStream 意外失败

这个问题具体是关于通过TCP使用原始数据的NetworkStream的后台通信中发生了什么。TcpClient连接直接与网络上的硬件设备通信。每隔一段时间,NetworkStream就会出现打嗝,最好在Debug模式下观察时进行描述。我在流上设置了读取超时,当一切都按预期工作时,当跨过Stream.Read时,它将坐在那里等待传入数据的超时时间长度。如果不是,只有一小部分数据通过,TcpClient仍然显示为打开和连接,但Stream.Read不再等待传入数据的超时时间。它立即转到下一行,显然没有收到任何数据,并且在处理完所有内容并重新建立新连接之前,不会有任何数据通过。问题是,在这个

c# - 获取 NetworkStream 中可用数据的长度

我希望能够从C#中的TCP网络流中获取可用数据的长度,以便在从网络流读取之前设置缓冲区的大小。有一个NetworkStream.Length属性,但尚未实现,我不想为缓冲区分配一个巨大的大小,因为它会占用太多空间。我想这样做的唯一方法是在数据传输之前用另一个告诉大小,但这似乎有点困惑。对我来说,执行此操作的最佳方式是什么。 最佳答案 访问时Streams,您通常以小块(例如1千字节左右)的形式读取和写入数据,或者使用类似CopyTo的方法。那就是为你做的。这是一个示例,使用CopyTo将一个流的内容复制到另一个流,并使用自动调整大小

c# - 为什么NetworkStream Read会这样?

我有一个应用程序使用TCPClient及其底层NetworkStream通过TCP套接字发送以换行符终止的消息。数据从实时数据流以每100毫秒大约28k的速度流入以进行监控。我已经删除了不相关的代码,这基本上就是我们读取数据的方式:TcpClientsocket;//initializedelsewherebyte[]bigbuffer=newbyte[0x1000000];socket.ReceiveBufferSize=0x1000000;NetworkStreamns=socket.GetStream();intend=0;intsizeToRead=0x1000000;whil

c# - 如何从 NetworkStream 获取所有数据

我正在尝试读取通过TCP/IP连接的机器缓冲区中存在的所有数据,但我不知道为什么我没有获取所有数据,有些数据丢失了。这是我正在使用的代码..using(NetworkStreamstream=client.GetStream()){byte[]data=newbyte[1024];intnumBytesRead=stream.Read(data,0,data.Length);if(numBytesRead>0){stringstr=Encoding.ASCII.GetString(data,0,numBytesRead);}}请告诉我从机器中获取所有数据我缺少什么。提前致谢..

c# - NetworkStream.Read() 不起作用并抛出 ArgumentOutOfRangeException

只是想创建一个聊天服务器客户端这是等待客户端连接的服务器(可选)*TcpListenerserverSocket=newTcpListener(8888);intrequestCount=0;TcpClientclientSocket=default(TcpClient);serverSocket.Start();Console.WriteLine(">>ServerStarted");clientSocket=serverSocket.AcceptTcpClient();Console.WriteLine(">>Acceptconnectionfromclient");然后,客户端连

c# - 应该异步执行对 NetworkStream 的写入

鉴于NetworkStream.Write()是一个阻塞调用,像SendMessage()这样的方法应该创建一个新线程来执行写操作,或者SendMessage()方法阻塞,直到消息发送或发生异常?我的直觉告诉我阻止此方法是合理的,但查看reallyniceexampleofsocketsinC#我发现他们正在创建一个新线程。我在创建另一个线程时看到的主要问题是错误处理。PS:我知道写入、读取等的异步版本,但发现IAsyncResult相当困惑,目前正在推迟使用这些选项。 最佳答案 如果您在UI线程上调用SendMessage(),那

c# - NetworkStream 开始读取/结束读取

我是C#编程的新手,我正在开发基于TcpClient的应用程序。我想知道如何使用BeginRead和EndRead,我已经阅读了MSN文档但没有帮助。我有这个:privatevoidSend(){TcpClient_client=newTcpClient("host",80);NetworkStreamns=_client.GetStream();ns.Flush();/...ns.Write(buffer,0,buffer.Length);intBUFFER_SIZE=1024;byte[]received=newbyte[BUFFER_SIZE];ns.BeginRead(rece

c# - NetworkStream.Write 数据似乎没有到达接收套接字

C#System.Net,套​​接字我遇到了一个问题,我无法弄清楚我可能做错了什么。故事是,我将byte[]应用程序数据从TcpClient套接字发送到另一个TcpClient套接字。一切都很好,直到我在发送应用程序数据之前添加自定义伪Athentication测试,之后原本有效的发送和接收失败。我说失败了,但实际发生的是它似乎只在读取套接字处将3个字节全部设置为0。Authenticate方法执行以下操作。服务器端发送1个字节的数据(0-85),客户端接收它,将其视为一个int,将其乘以3并将一个字节发送回服务器。服务器检查该值,并将另一个字节返回设置为1。所有这一切似乎工作正常,但

c# NetworkStream 通过 tcp/ip 配置

我希望有人能告诉我为什么我的tcpListener/tcpClient代码中出现对象处置异常。在acceptConnections和connectToServer方法中,我使用keepalive方法在断开连接时告诉我,它工作正常。但是,如果我取消注释我的sendMsg方法的for循环,我将在服务器上得到一个ObjectDisposedException,在客户端上得到一个IOException。SendMsg中的tcpClient.getStream()的NetworkStream似乎是问题所在,但我不确定为什么它会得到处置流。我需要2个线程才能使用它吗?staticvoidMain(

c# - C# 中 networkstream.read() 的奇怪行为

当我向网络流写入两个单独的字节数组时,有时我得不到第一个字节数组。这是为什么?例如,这失败了,没有收到header,有时由另一端的Read()接收byte[]header=msg.getByteHeader();byte[]data=msg.getByteData();clientStream.Write(header,0,header.Length);clientStream.Write(data,0,data.Length);clientStream.Flush();然而这成功了NetworkStreamclientStream=tcpClient.GetStream();byte