Library tutorials & articles
A TCP/IP socket server object for Visual Basic
Overview
Although socket based TCP/IP servers using IO Completion Ports are often written in C++ it's sometimes useful to write such a server in Visual Basic. You can use the Winsock control for this, but it deals with the Windows Sockets interface at a very low level and you have to write lots of VB code. This article presents a simple COM object that wraps the high performance socket server framework that we developed in the previous article. The COM object provides a simple, yet powerful, interface that allows you to easily construct high performance TCP/IP servers with a minimal amount of VB code.
The article presents the Socket Server COM object and a simple sample VB server application and describes how you use the COM object. The next article will deal with how the COM object was constructed and the design decisions and coding of the object itself. Please note that this object can only be used on Windows NT/2000/XP it does not support Windows 9x.
Related articles
Related discussion
-
Flex 3 Component Solutions: Build Amazing Interfaces with Flex Components
by matquy_kyo22 (0 replies)
-
Java - Closing inputstream causes socket to close
by led1433 (1 replies)
-
How to POP3 in C#
by bishnu.tewary (7 replies)
-
The "Easy Installer" from JoomlaTag
by msecure32 (0 replies)
Related podcasts
-
Java Posse #206 - Newscast for Sept 17th 2008
Newscast for Sept 17th 2008Fully formatted shownotes can always be found at http://javaposse.com Java complexity again, but from a different angle:http://forums.java.net/jive/thread.jspa?messageID=298125&tstart=0#298125 JVM Language summit - the details emergehttp://openjdk.java.net/project...
I ran the server on one machine and the client on another and managed to get a connection and send some data. However after sending a few test messages "1234567890" I try and receive as string at the other end and it stops working. I put in extra calls in the event handlers and they don't get called. The sender thingks it has sent the data. The only way I can stop it is to open the connection again and then press send. Any ideas?
Also when I close down the server, Windows2000 server won't let me delete the file even though it is not in the process list - is there some resource that needs closing in the code somewhere on exit?
I am trying to get a reliable point to point comms for sending some string data.
Ross D.
There was a stupid precedence error in the original code, this may be related to it?
LPOLESTR pOle = ((lpa = (char*)mpData) == NULL) ? NULL : ATLA2WHELPER((LPWSTR) alloca(mlength + 1*2), _lpa, mlength);
should be
LPOLESTR pOle = ((lpa = (char*)mpData) == NULL) ? NULL : ATLA2WHELPER((LPWSTR) alloca((mlength + 1)*2), _lpa, mlength);
I'm afraid I don't have a free version of this code that includes client support.
Yes.
may I use this library for a client application? do you have another dll to do this (with vb6)? great job
There're several useful Winsock tutorial on this site... But its not detailing enough considerations in helping newbie extend the tutorial into actual application environment. One of them is providing a tutorial on preventing reentrancy when working high socket traffic scenario.
Typical Winsock application logic when data arrives...
1. The Winsock_DataArrival event fires when client sockets send data to the listening socket server
2. On Data Arrival, Inspect the data received
3. Process the data received (e.g. Lookup Databases, Refresh GUI, and others)
When multiple data stream or even large chunk of data arrive while your code is Processing "time-instensive" routines/tasks will require u to implement a FIFO buffer into your code to ensure all incoming data are captured and processed properly... I'm pleading for the community to add this logic to existing tutorial or post some sample code. Thanks in advance.
Does you server support multiple clients connecting simultaneously?
This thread is for discussions of A TCP/IP socket server object for Visual Basic.