草庐IT

Tcpclient

全部标签

c# - 通过 TCP 发送大对象 : "End of Stream encountered before parsing was completed"

每当我尝试从NetworkStream中反序列化double列表时,我总是收到SerializationException:EndofStreamencounteredbeforeparsingwascompleted我有一个简单的客户端服务器架构:我的TcpTransportClient包装了TcpClient的功能,我使用了两种基本方法:Send(发送消息)和Receive(阻塞直到收到消息)。Send函数接收一个Message,使用BinaryFormatter将其序列化并通过NetworkStream发送字节.publicvoidSend(Messagemessage){if(

c# - TCP客户端\服务器 - 客户端并不总是读取

客户代码:TcpClientclient=newTcpClient();NetworkStreamns;privatevoidForm1_Load(objectsender,EventArgse){try{client.Connect("127.0.0.1",560);ns=client.GetStream();byte[]buffer=ReadFully(ns,client.Available);//workingwiththebuffer...}catch{//displayingerror...}}publicstaticbyte[]ReadFully(NetworkStream

sockets - TCPClient 只会连接一次

我正在构建一个通过TCP与机器通信的应用程序。我遇到的问题是我可以连接并且一切正常但是一旦我断开连接然后尝试重新连接我得到的只是错误我在表单中的代码是privatevoidbtn_connect_Click(objectsender,EventArgse){try{Log(LogMsgType.Normal,String.Format("Connectedon{0}\n",DateTime.Now));stringip=(txt_ipadd_1.Text+"."+txt_ipadd_2.Text+"."+txt_ipadd_3.Text+"."+txt_ipadd_4.Text);Lo

c# - 动态输入数据时 TCP 服务器无法正确接收

我正在开发一个简单的TCP服务器应用程序,它从流中接收数据并将其存储在列表中。当每个连接在一条消息中发送数据时,我已成功获取数据。我的问题似乎是在从命令行使用telnet对其进行测试时。我将开始打字,程序将根据我的打字速度抓取一两个字符,然后不再从该流中接收任何内容。我真的不知道为什么。如果我在stream.DataAvailable循环中放置一个thread.sleep,那么它将获得更多字符,但会再次停止。任何帮助表示赞赏。我的类(class)如下:publicclassTCPServer{privateTcpListenerlistener;publicListmessages;p

vb.net - 一个TCP连接需要在两端进行哪些 Action

我不太明白当TcpListener和TcpClient通信时,一些功能是如何共享的。假设运行了以下代码(现在忽略同步):服务器:DimserverAsNewTcpListener(localAddr,port)server.Start()DimclientAsTcpClient=server.AcceptTcpClient()客户:DimclientAsNewTcpClientclient.Connect(hostAddr,port)连接成功。现在有两个TcpClient实例——一个在服务器端,一个在客户端。但是,它们通过TcpClient.GetStream()共享相同的网络流。我有

c# - 我如何持续监控新的 TCP 客户端?

我有一个TCP服务器,它持续异步监视新传入的客户端并将它们添加到客户端列表中:publicclassTcpServer{publicListClientsList=newList();protectedTcpListenerServer=newTcpListener(IPAddress.Any,3000);private_isMonitoring=false;publicTcpServer(){Server.Start();Server.StartMonitoring();}publicvoidStartMonitoring(){_isMonitoring=true;Server.Be

.NET 异步 TcpListener/TcpClient 问题

对于如何正确实现TcpListner和TcpClientint.NET的异步方法,我有点不知所措。我已经阅读了很多关于hear的帖子,我相信我有代码来接受服务器上的新客户端。这是接受新连接的代码:PublicSubStart()m_oListener=NewTcpListener(m_oIpAddress,m_iPort)m_oListener.Start()m_oListener.BeginAcceptTcpClient(NewAsyncCallback(AddressOfOnAcceptClient),m_oListener)EndSubPublicSubOnAcceptClien

c# - TcpClient 在异步读取期间断开连接

我有几个关于完成tcp连接的问题。客户端使用Tcp连接到我的服务器,在使用listener.BeginAcceptTcpClient(ConnectionEstabilishedCallback,null);接受客户端后,我开始使用networkStream.BeginRead(....)。当我等待消息时客户端断开连接会发生什么?(例如断电、断网等)我怎么知道它什么时候发生?如果在成功读取之后,我做了一些事情,然后调用networkStream.Close();client.Close();客户端会看到什么?如何“优雅地”终止连接?如果我正在等待读取(使用BeginRead),然后(在

tcp - Indy TCP - 循环读取数据

TCP服务器每8毫秒连续发送一次数据帧。我想编写一个能够接收这些数据帧的客户端。Indy9中是否有任何程序可以知道缓冲区中是否有可用数据?我当前的程序如下(我正在使用线程):procedureTThreadRead.Execute;varbuffer:array[0..755]ofbyte;//s1:string;//i:integer;beginIdTCPClient1.RecvBufferSize:=756;IdTCPClient1.Connect;whileTerminated=falsedobeginifIdTCPClient1.InputBuffer.Size=0thenId

C# Modbus/tcp - 挂起连接

我编写了Windows服务,它使用NModbus通过TCP执行ModbusWriteMultipleRegisters函数调用每10分钟将库传输到3方设备(System.Threading.Timer的滴答声)。偶尔这个连接会挂断,通常是在网络问题期间。由于设备一次只接受一个Modbus连接而其他连接被拒绝,因此所有下一个滴答期间的连接都会失败并出现SocketException-ConnectionRefused。但是设备会自动关闭短时间后没有响应的连接。即使是两天,也必须在我身边保持连接。更重要的是,当我的服务重新启动时,一切都恢复正常了。所以肯定有一些被遗忘的开放连接。但是我没有