Why Is Socket.BeginReceive Losing Packets From UDP

Sep 25, 2010

The following code waits for data over UDP. I have a test function that sends 1000 packets (datagrams?) of 500 bytes each. Each time I run the test function, the receiver gets only the first few dozen packets but drops the rest. I looked at the incoming network data using Wireshark and I see all 1000 packets are actually received, but just don't make it to may app's code.[code]If I add a small delay after each call to Send, more packets make it through; however since Wireshark says that they were all received anyways, it seems that the problem is in my receive code. I should mention that UdpListen is running on a separate thread.Any idea why I am dropping packets? I also tried UdpClient. BeginReceive/ EndReceive but had the same problem. A second issue that bothers me is the global nature of the receive buffer when using Sockets and I am not sure if I don't process incoming packets quickly enough that the buffer will be overwritten.

Based on the various, somewhat conflicting suggestions from replies to this and other posts, I made some changes to my code. Thanks to all who chimed in various bits; I now get all my packets from dial-up to Fast Ethernet. As you can see, it was my code at fault and not the fact that UDP drops packets (in fact I have not seen more than a tiny percentage of packets being dropped or out of order since my fixes). Differences:

1) Replaced BeginReceive()/EndReceive() with BeginReceiveFrom()/EndReceiveFrom(). By itself this had no notible effect though.

2) Chaining BeginReceiveFrom() calls instead of waiting for the async handle to set. Not sure if any benefit here.

3) Explicitly set the Socket.ReceiveBufferSize to 500000 which is enough for 1 second worth of my data at Fast Ethernet speed. Turns out this is a different buffer than the one passed to BeginReceiveFrom(). This had the biggest benefit.

4) I also modified my send routine to wait a couple of ms after having sent a certain number of bytes to throttle based on expected bandwidth. This had a big benefit for my receiving code even though Wireshark said all my data still made it across even without this delay.

I did NOT end up using a separate processing thread because, as I understand it, each call to BeginReceiveFrom will invoke my callback on a new worker thread. This means that I can have more than one callback running at the same time. It also means that once I call BeginReceiveFrom I have time to do my stuff (as long as I don't take too long and exaust the available worker threads).[code]What is not shown above is the error handling and dealing with UDP data being out of order or missing.I think this handles my issue, but if anybody still sees anything wrong with the above (or something I could do better) I would love to hear about it.

View 5 Replies


ADVERTISEMENT

System.Net.Sockets.Socket.BeginReceive And StateObject?

Sep 15, 2009

The MSDN Documentation in question can be found here:[URL].. It offers the following code snippet example:

[Code]...

View 2 Replies

VS 2008 Socket Application - Transfer Packets From The PC To The Mobile Phone

Nov 2, 2009

i try to transfer packets from the PC to the Mobile phone~ my PC is act as a Server and Mobile as a Client. My Mobile is successfully connect to my PC, but when i try to pass a packets from Mobile, it went failed without any error. The Server didn't receive any packets from Mobile. i had test my code on PC to PC and it's work fine. Anyone have this kind of experience?

View 3 Replies

If The Packet Received Is Over A Certain Size, The Socket Then Fails To Receive Anymore Packets/data After It?

Jul 4, 2011

I'm writing a program which uses sockets, Now the issue I'm having is, If the packet received is over a certain size, the socket then fails to receive anymore packets/data after it.

View 3 Replies

UDPClient Hanging When Using BeginReceive And Nothing Is Received?

Jul 6, 2011

I am using the following code to receive data from a Public Address Controller.the programme sends data...waits for a reply....send more data...waits for a reply..etc.

[Code]...

is there some way of cancelling the BeginReceive after a delay so that the programme can carry on and inform the user that something is wrong and terminate gracefully?

View 8 Replies

VS 2008 BeginReceive/EndReceive - Docs Incorrect?

Nov 2, 2009

This is the MSDN example for handling the BeginReceive callback.BeginReceive is called over and over until no more data is available, i.e. EndReceive returns 0. However I am finding that the callback is only fired when there is data available.

I'm guessing that the example is simply wrong or refers to expected behaviour in a previous version of .NET, although it says it is for 3.5.So how do I ensure I have received all of the available data?

[Code]...

View 3 Replies

Identify Connection Lost Between Socket Server And Socket Client?

May 21, 2011

I wrote a Socket Client which will send the Socket Server some data and get some response from Server. This process will be running once in every 2 seconds.

Now what I need to know is How we can identify the connection lost between Server and Client?

I need this to be implemented in the Client side. If there is no connection then Client should automatically close the connection. Once the connection with the server is available in the next attempt it should connect automatically.

View 1 Replies

Client Socket - Send Message Through Client Socket Receive Specified Argument Was Out Of Range Of Valid Values

Oct 15, 2011

Below is my code, but when i send the message thru client socket i receive Specified argument was out of the range of valid values. Parameter name: size

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim serverStream As NetworkStream = clientSocket.GetStream()
Dim outStream As Byte() = _
System.Text.Encoding.ASCII.GetBytes("0800822000000000000004000000000000000920092126012345001")

[CODE]...

View 1 Replies

Reading Packets From UDP / IP

May 13, 2009

I am writing a program that talks back and forth with an external machine through UDP/IP. I have figured out how to talk to the machine, bu now I need to know how to read the machine's response. I am using the following code:
Dim receiveBytes As [Byte]() = udpClient.Receive(RemoteIpEndPoint)
Dim returnData As String = Encoding.ASCII.GetString(receiveBytes)
TextBox1.Text = returnData
When I break the code down and read receiveBytes, it comes through exactly the way I want it. It is falling apart when it gets encoded and put into a textbox. It just comes out as a "?".

View 11 Replies

Receiving UDP Packets From Different Ip's?

Jun 19, 2009

I am trying to receive about 900 packets coming from around 900 different ip's. But for some reason I can't seem to capture them all. The same code in C++ seems to work fine, but when I try to do it and run it through the parser it seems that I only get about 150 - 300 of these packets each time I ask for them.

[Code]....

View 3 Replies

TCP: Differentiate Between Packets?

Oct 3, 2010

Does anyone know of a good example of TCP, in C# or VB.NET?

The problem I have with the majority i've found is that they send data once, receive data once, and end. This isn't a workable example. Even MSDN's example does this.

My main question:

Every example reads incoming data into a buffer (byte array), usually 512 bytes. If two packets are received in a row, how do I know where one packet's data ends and another's begins? What if a single packet has more than 512 bytes of data?

All TCP examples i've found work in a rather procedural way.

I'd like to have something as simple as this:

Code:
Public Sub OnPacket(data As Byte())
End Sub

View 13 Replies

Detect Individual SYN Or FIN Packets?

Mar 16, 2011

Can I send and detect individual SYN or FIN packets using VB.NET Sockets or any other process in VB.NET?

View 2 Replies

Receive And Send Packets?

Jul 25, 2009

Since a few months I want to learn how to receive and send packets. Since WinSock doesn't work I think it'll be quite hard to get an easy way to do it.

I want to be able to send and get packets as a client. (TCP) I know that I need System.Net.Sockets, and that's quite everything...

View 5 Replies

Way To Send Parsed Packets

Mar 8, 2011

I am on a new topic in VB.NET and I am so confused I don't really even know where to start. It is sending Parsed Packets. This packet below is a login server of a game and I want to know how to send it so it automatically does it.[code]....

View 6 Replies

.NET Asynchronous Sockets Packets Getting Lost?

Oct 15, 2011

I made a TCP server which communicates with multiple clients at once, but I can't seem to be able to make them stable. When one of the client sends 100 packets to the server, the server receives only a few of them.Here's the client code in PasteBin. It shows how the client connects to the server and then sends 100 messages in a For loop to the server.And here's how the server handles the connection. I couldn't paste the full source as it's hundreds of lines long so let me know if it's missing any mandatory parts and I'll upload them as well.

View 1 Replies

Not Receiving All Packets - VB Sockets - Async?

Oct 27, 2009

Here's the code on the sending side of my sockets:

Private Sub Send(ByRef Buffer() As Byte)
Dim obj_StateObject As New StateObject
obj_StateObject.WorkSocket = m_tmpSocket

[code].....

View 1 Replies

Sending Raw Packets To WebBrowser Control?

Feb 15, 2009

Well I need to send a raw packet to a Web Browser Control. The packet is:
"%xt%z%zo%50% . 1000000 . "%""
I need to send it to a flash game but I have no idea how to.

View 13 Replies

Use Packet X To Capture Packets From A Certain Program That Uses UDP?

Jun 12, 2011

I have been trying to figure out how to use Packet X to Capture Packets from a certain program that uses UDP. Does anyone know how to do so?

View 1 Replies

VS 2008 - Handle Packets When It Comes In Parts?

Jul 6, 2011

I have a program which uses TcpClient, the issue I'm having is how do I construct the packets when some of them come in seperate parts. For example, If I receive 5 packets, 2 of them are fine, but the other 3 have come in seperate parts when it's suppose to be a whole packet. How can I handle this?

View 5 Replies

VS 2008 - Time Stamps On Sent Packets

Aug 20, 2009

Im sending packets through UDP, and want to get the time it takes for the server to receive the packet from the client. Would the best way be by adding a timestamp to the packet the client sends, and then use that time with the server to calculate the actual time it took to receive?

View 39 Replies

VS 2008 Sending Packets To A IP Address?

Dec 28, 2009

Hey there, I thought i would redo my question, How could i send packets in VB to a IP and Port, I'm unsure on how to do this could somebody tell me?

View 4 Replies

Make A Packet Sniffer That Will Give SSL Packets

Oct 11, 2010

I need to make a packet sniffer that will give me SSL packets. It doesn't need to give me any other information than the body of the packet, the actual data being sent to me. It does not need to differentiate between different IP addresses. And, it doesn't even need to differentiate between things which are and are not SSL packets. Any packets will be fine, it just needs to support SSL packets. The fewer lines of code the better...

View 5 Replies

Send Separate Packets From Server To Client?

Oct 1, 2009

Now i need to send separate packets from the server to the client.For the client I am using usual Tcp but for the server I am using Winsock Control. [code]...

View 5 Replies

VS 2008 Empty Values In Packets Disappear - TCP?

Jun 10, 2010

Empty values in byte array at the end of one packet are replaced by beginning values of the next packet sent in TCP connection. How may I avoid this?

View 4 Replies

VS 2010 Sniff Packets From A Specific Application

Feb 14, 2011

I'm trying to sniff packets from a specific application. I searched around but couldn't find anything useful, but I did hear something about WinPcap. What is WinPcap and how do I use it? Also, is there another way to sniff packets?

View 6 Replies

Communications :: Could Lost Packets Interfere With Network Operation

Jul 29, 2008

At my workplace I have been developing a server/client application which receives on port 8000 and sends on 8001. We do not have any other applications that use these ports, but we do have an application that accesses an SQL database in which part data is stored.

When I am doing testing on the application, if the server were to crash while the client app was sending a packet, could this lost packet cause issues with the network at all?I ask because for some reason we have been receiving connection timeout errors from the application that stores our product data, but we haven't made any changes or started running any new jobs on the network that I am aware of.

View 1 Replies

Communications :: Used To Assemble And Send Raw Packet / Receive Response Packets?

Sep 14, 2008

What Visual Basic code can be used to assemble and send a raw packet, and receive response packets? I looked on MSDN and I couldn't find any documentation for anything used to send a packet.

View 2 Replies

VS 2010 Tcp Client Application Mixes Up The Order Of Received Packets?

Oct 22, 2010

I have written a simple Server application that transmits an XML string to all connected clients when the user updates/alters a datagridview. When I connect to this server with telnet I can see the correctly formed xml string.

I have also written a client application, which on reception of the Xml string, displays it in a datagridview. But When I look at the xml string it is either missing parts of in the wrong sequence.

[Code]...

View 1 Replies

.net - Losing Data Continued?

Jan 20, 2011

This procedure is inside of the xsd file:

Public Shared Sub AddRowData(ByVal sender As Object, ByVal e As System.EventArgs)
Dim myDataCol As DataColumn
Dim myDataRow As DataRow

[code]....

Before it leaves the procedure I'm checking the DataSet row and I see that the Variable are there.In the next step it goes to a form on which I'm viewing the relative report.The Last form has only the Load event, nothing else. there is no any row .

View 1 Replies

C# - WPF: Control Losing Its Binding?

Nov 26, 2010

I have a MenuItem of a context menu of a Grid and its IsEnabled property is bound to MyProperty. It works fine until I actually click on the event handler of the MenuItem, which has no code in it. After I have clicked on the MenuItem the dataBinding no longer works.

I can tell cos' my breakpoint in the getter of MyProperty does not get hit.

[Code]...

View 2 Replies







Copyrights 2005-15 www.BigResource.com, All rights reserved