Read a Network Stream from a socket
I created a simple server application and tested your client code out. It all works fine for me. I would suggest you look at the server code to double check that it is sending data to the client. You could also use a packet sniffer tool such as WireShark to verify data is being transmitted as well.
Here is my server code:
IPEndPoint maxPort = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);
TcpListener listener = new TcpListener(maxPort);
listener.Start();
Socket socket = listener.AcceptSocket();
socket.Send(new byte[] { 1, 2, 3, 4, 5 });
socket.Close();
If your server is returning data, you may want to check the TCP headers. The problem might be from the PSH bit not being set. This would cause the TCP stack to not signal up that data is available yet. I am thinking this from the fact that you said Read
call doesn't return and DataAvailable
returns false continually.
Hope this helps.
JMK
Software developer currently living in Belfast, jack of a couple of trades, master of none!
Updated on August 16, 2022Comments
-
JMK over 1 year
I am trying to read a Network Stream from a socket. I know that the Address Family of the socket is InterNetwork, the Socket Type is Stream and the Protocol Type is IP.
I have an IPEndPoint which consists of the IP address and the port that I am trying to read from.
NetworkStream myNetworkStream; Socket socket; IPEndPoint maxPort = new IPEndPoint(IPAddress.Parse("x.x.x.x"), xxxx); socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); socket.Connect(maxPort); myNetworkStream = new NetworkStream(socket); while (myNetworkStream.DataAvailable == false) { Thread.Sleep(1); } byte[] buffer = new byte[1024]; int offset = 0; int count = 1024; myNetworkStream.Read(buffer, offset, count); Console.ReadLine();
I know that data is available (I am writing my own version of an existing application and am using the source code as a reference) but the true/false Data Available property always remains false and I never hit my Console.Readline().
What am I doing wrong here?
-
JMK over 12 yearsThanks, turns out I wasn't getting a response because I wasn't logging into the device! Doh!