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
ADVERTISEMENT
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
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
Jul 25, 2011
I'm using vb .net 2008 with 3.5 framework. (the following 2 classes are put in a DLL that i import in a main application)
Server class:
Code:
Imports System.Xml
Imports System.Net.Sockets
Imports System.Text
Imports System.Net
[code]....
Basically in my main application i am instantiating the client class from this dll, as well as the server one. On the client form i got a "send data" (SendFISA sub) and a "connect" button. After connecting the client and clicking on the "send data" i am sending to the server a string formed of some information created when instantiating the client class from the dll (i can't make that type of data public, but i'm just using a constructor to assign values to a class object, nothing special).
Now, when the server receives the data sent by "send data" button click it responds with "PKG_SENT" corresponding to the "FISASENT" string terminator(in the module) of the string that was sent. The "WRONG_MSG" constant is for when the string terminator is different from the 2 from above.
On the local disk, if the server cannot be reached, the client saves an xml file with this data. In the dll i made a timer that ticks every 5 seconds and checks to see if there is any xml file on the disk and sends it to the server if the connection is ok (trimiteXML sub). The server would respond with "XML_SENT" corresponding to the string terminator "XMLSENT"(in the module) appended to the read string from the xml file. After the file is sent it is deleted from the local dir.
The problem occurs when i click "send data" AND there are XML files to be sent from the disk. I believe they are interpreted by the server somehow at the same time because the message is neither "PKG_SENT" nor "XML_SENT", but it becomes a combination of the "WRONG_MSG_TYPE" and "XML_SENT", "XML_SENTG_TYPE". I have no idea why this is happening and i basically want the socket to wait with sending the files from the disks until the "send data" finishes.
View 9 Replies
Jun 16, 2009
I'm trying to setup an asynchronous client and I can send/receive one command and response, but when I try to send the second command, the command is sent (I verified by code inspection), but I am getting no response.
Heres the code, a majority of it is from the Microsoft example.
Option Explicit On
Imports System
Imports System.Net
[Code].....
View 1 Replies
Dec 17, 2008
Alright Simple question I got my main thread running Form Load and I make a socket then called BeginAcceptthen I pass AR to a Function that handles the Accept and creates a whole another sockets out of it and then loops for recv then when it gets everything closes then exits the functionbut how do I make the Socket from Form_Load run BeginAccept again to wait for another connection.. Do I call that command and Point it to the same Block thats Currently running, The block that Handles the AR Param??
View 3 Replies
Apr 9, 2011
I'm using .BeginConnect with an AsyncCallBack and for some odd reason when I try to add a string to a textbox using the sub below, from a routine within the socket, it just does not work. It's not stating an invoke is required either.Private Delegate Sub DelegateAddText(ByRef theText As String, ByRef AddReturn As Boolean, ByRef AddPrefix As Boolean) Public Sub AddText(ByRef theText As String, ByRef AddReturn As Boolean, ByRef AddPrefix As Boolean)
[Code]...
as a side note which would be more efficient ... Indexing sockets and passing indexes through routines, or spawning classes. I realize spawning may use more memory but is it faster than indexing?
View 2 Replies
Dec 18, 2009
I have been developing an async socket connection server and client program. I have been testing it, and noticed that if I connect to the server from my client and then disconnect. Upon reconnecting I am on a different port(local IP still). This is fine, however when I go to send a message, and the server trys to update all the clients, it eventually hits clients that do not exist anymore. I get the SocketException 10054, and upon connecting/disconnecting enough, it no longer works at all. My question is how do I clear out these no longer useful sockets from the server? I am doing currentsocket.Shutdown(SocketShutDown.Both); and then a currentsocket.Close(); after that. When a user disconnects.
[Code]...
View 1 Replies
Apr 22, 2009
(First time trying to do socket programming ) I'm trying to read a large buffer using sockets. Is there anything wrong with this psudo code?
DO
mySocket.Receive(buff) ' temporary buffer, discard the data
WHILE (mySocket.Available > 0)
it terminates after the first iteration because, I suppose, it reads the data faster than the sender is sending it, and Socket.Available will be 0 (if i break the debugger and step through it, it receives the whole buffer). How can i make the Receive call block until more data is available? (I've tried setting Socket.ReceiveTimeout, but it doesn't seem to do any good)
View 3 Replies
Jun 3, 2010
I'm trying to write a 'developer friendly' wrapper for the Windows API EnumWindows - the problem is that the API uses a callback function that gets invoked on another thread, where as I want my wrapper function to simplify this and make it more useful by working like any other normal synchronous function and just returning a value.
Now if the API just called the callback once that would be fine, as I would just call the API and make the wrapper function wait until it got a signal from the callback function telling it to continue... but the API calls the callback function over 100 times (once for every window handle that exists). The biggest problem is that there is nothing that indicates that any particular call to this callback function is the last one, so my wrapper function has no idea when it is safe to continue and return the list of window handles to the caller.
The only solution I could think of is to do this:
1. The wrapper function calls the API and starts a timer that waits 2 seconds before it raises the Elapsed event. The wrapper function then pauses until it receives a signal (ManualResetEvent)
2. Each time the callback function is raised by the API on a different thread, it stops the timer (so this is before the 2 seconds have elapsed), adds the current window handle that was passed in by the API to the list of handles, then starts the timer again.
3. If the timer reaches its 2 second interval then it is assumed that we are at the end of the windows because otherwise the callback would have stopped the timer. So the timer's Elapsed event handler is what signals the original thread (that the wrapper function is executing on) to continue as we now have a complete list of windows to return.
This works fine and does exactly what I want... but I dont like it.
I dont like forcing the caller to wait an extra 2 seconds after the API has done its last callback but more importantly I dont like assuming that the API will never take longer than 2 seconds between callbacks. In reality on my PC it is never anywhere near that long between callbacks, it is something like 200 miliseconds, but I have no idea how long it would be on a slower PC and I want this to be completely reliable.
[URL]
View 14 Replies
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Jul 15, 2010
I have two methods on the page. One AddMessageToInboxOutbox(params[]) and other one SendNewMessageMail(params[]).
Once user sends an message to other other first message is added to DB and then sent to recipient's email. Sometimes SMTP is heavy loaded and it takes up to 5 seconds to get answer from it. I want to enclose SendNewMessageMail(params[]) with async call using other thread or something. I have never done that.
How do i perform this action right in ASP.NET?
View 2 Replies