|
Shared Sockets
The WSADuplicateSocket function is introduced to enable socket sharing across processes. A source
process calls WSADuplicateSocket to obtain a special WSAPROTOCOL_INFO structure. It uses some interprocess communications (IPC) mechanism to pass
the contents of this structure to a target process. The target process then uses
the WSAPROTOCOL_INFO structure in a call to WSPSocket. The socket descriptor returned by this function will be an additional socket
descriptor to an underlying socket which thus becomes shared. Sockets can be
shared among threads in a given process without using the WSADuplicateSocket function because a socket descriptor is valid in all threads of a process.
The two (or more) descriptors that reference a shared socket can be used
independently as far as I/O is concerned. However, the Windows Sockets interface
does not implement any type of access control, so the processes must coordinate
any operations on a shared socket. A typical example of sharing sockets is to use
one process for creating sockets and establishing connections. This process
then hands off sockets to other processes that are responsible for information
exchange.
The WSADuplicateSocket function creates socket descriptors and not the underlying socket. As a
result, all the states associated with a socket are held in common across all the
descriptors. For example, a setsockopt operation performed using one descriptor is subsequently visible using a getsockopt from any or all descriptors. A process can call closesocket on a duplicated socket and the descriptor will become deallocated. The
underlying socket, however, will remain open until closesocket is called with the last remaining descriptor.
Notification on shared sockets is subject to the usual constraints of the WSAAsyncSelect and WSAEventSelect functions. Issuing either of these calls using any of the shared descriptors
cancels any previous event registration for the socket, regardless of which
descriptor was used to make that registration. Thus, for example, it would not be
possible to have process A receive FD_READ events and process B receive
FD_WRITE events. For situations when such tight coordination is required, it is
suggested that developers use threads instead of separate processes.
| Last news from Greatis Software |
 |
|
Nostalgia .Net |
|
.Net is powerful, but not all-powerful, so sometimes we need to use Win32 API for our .Net applications. It's simple enough with Platform Invoke if you have Win32 skill, but we do not always have time to dig the ancient documentation, declare the special types that are compatible with Win32, find the values of the Win32's constants and so on. Nostalgia .Net offers several simple-to-use classes, and components that will allow you to forget about the headache of Win32 and just use the power of Win32 in your application the same way as you use the native. Net classes. More » |
| Recommended software for developers |
 |
|
Ultimate Pack |
|
Component pack for Delphi and C++ Builder that contains runtime form designer, runtime object inspector, print suite and much more for the very special price. More » |
 |
|
Form Designer .Net |
|
Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime with full source codes for only 300 euro! More » |
 |
|
Print Suite .Net |
|
Print Suite .Net is a set of components for easy printing texts, images and grids from your WinForms applications. Full C# source codes are available More » |
 |
|
Gradient Controls .Net |
|
Gradient Controls .Net offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available More » |
 |
|
Greatis iGrid |
|
iGrid plots drawing grid right over your desktop, so you can use it everywhere, with any drawing application without any special plugins for different graphic editors. More » |
All the contacts and projectsDmitry Vasiliev (just.dmitry)
Related LinksSoftware for Visual Studio .NET developers Software for Delphi and C++ Builder developers Software for Visual Basic 6 developers Delphi Tips&Tricks MegaDetailed.NET More Online Helps Win32 Programmer's Reference Win32 Multimedia Programmer's Reference OLE Programmer's Reference Microsoft Windows Pen API Programmer's Reference Microsoft Windows Sockets 2 Reference Microsoft Windows Telephony API (TAPI) Programmer's Reference Unix Manual Pages
|