|
honestly, i didnt work with sockets via MFC, but in DOS serverside app this looks like following call-sequence:
1. bind
2. listen
3. accept
4. recv/send
i think it wouldn't differ enough with an MFC algorythm...
4apai
There're no impossible tasks. There're tasks that required infinite period of execution time.
|
|
|
|
|
Okay I'm going to make an attempt to answer this.
Anonymous wrote:
void CMultiAPIDlg::OnBConnect()
{
m_connectsocket.Create ( 0 ) ;
m_connectsocket.Connect ( m_server, m_port) ;
}
This should be a create then a listen. Like this
void CMultiAPIDlg::OnBConnect() <br />
{<br />
m_listensocket.Create ( m_port ) ;<br />
m_listensocket.Listen ( ) ;<br />
}
The Create is where you specifiy what port you want your server listening on. Next you must listen for a connection. Also to make it easier switch your class reference around to reflect your app. For servers they listen, for clients they connect. So in the code above I switched the references around. Now just accept your connection just like you have it.
One last suggestion in your mysocket class, in the onconnect, I would do something like this:
if (nErrorCode != 0)<br />
{<br />
switch( nErrorCode )<br />
{<br />
case WSAEADDRINUSE: <br />
AfxMessageBox("The specified address is already in use.\n");<br />
break;<br />
case WSAEADDRNOTAVAIL: <br />
AfxMessageBox("The specified address is not available from the local machine.\n");<br />
break;<br />
case WSAEAFNOSUPPORT: <br />
AfxMessageBox("Addresses in the specified family cannot be used with this socket.\n");<br />
break;<br />
case WSAECONNREFUSED: <br />
AfxMessageBox("The attempt to connect was forcefully rejected.\n");<br />
break;<br />
case WSAEDESTADDRREQ: <br />
AfxMessageBox("A destination address is required.\n");<br />
break;<br />
case WSAEFAULT: <br />
AfxMessageBox("The lpSockAddrLen argument is incorrect.\n");<br />
break;<br />
case WSAEINVAL: <br />
AfxMessageBox("The socket is already bound to an address.\n");<br />
break;<br />
case WSAEISCONN: <br />
AfxMessageBox("The socket is already connected.\n");<br />
break;<br />
case WSAEMFILE: <br />
AfxMessageBox("No more file descriptors are available.\n");<br />
break;<br />
case WSAENETUNREACH: <br />
AfxMessageBox("The network cannot be reached from this host at this time.\n");<br />
break;<br />
case WSAENOBUFS: <br />
AfxMessageBox("No buffer space is available. The socket cannot be connected.\n");<br />
break;<br />
case WSAENOTCONN: <br />
AfxMessageBox("The socket is not connected.\n");<br />
break;<br />
case WSAENOTSOCK: <br />
AfxMessageBox("The descriptor is a file, not a socket.\n");<br />
break;<br />
case WSAETIMEDOUT: <br />
AfxMessageBox("The attempt to connect timed out without establishing a connection. \n");<br />
break;<br />
default:<br />
TCHAR szError[256];<br />
wsprintf(szError, "OnConnect error: %d", nErrorCode);<br />
AfxMessageBox(szError);<br />
break;<br />
}
That way you know why your not connecting.
Hope this helps
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
You get no error messages? What about in debug mode do you get an unhandled exception or assertion failure?
Anonymous wrote:
AfxMessageBox("Connected");
Does that happen before the dialog closes?
Is m_listensocket.Listen() called in a worker thread? If so then, m_pWnd may not be valid in the mysock::OnAccept() member. MFC Window objects should not be passed accross threads. You can find Knowledgebase articles on this subject on MSDN.
At runtime do you have two instances of CMultiAPIDlg, one running as server and the second as the client?
-- signature under construction -- -pete
|
|
|
|
|
hi!
i'm so sorry i've wrongly quoted the client section of my code. the actual code of my server is
void CMultiAPIDlg::OnBConnect()
{
m_listensocket.Create ( m_port );
m_listensocket.Listen( ) ;
AfxMessageBox("Listening");
}
when the server is connected, the message "Listening" appears. hence, there's no problem with this part.
but when the client trys to connect, the following code was not evoked at all since i did not get the "Connected" message. the dialog box simply closes...
void mysocket::OnAccept(int nErrorCode)
{
AfxMessageBox("Connected");
if ( nErrorCode == 0 )
( ( CMultiAPIDlg* ) m_pWnd ) -> onaccept( ) ;
CSocket::OnAccept(nErrorCode);
}
and i do not have 2 instance of CMultiAPIDlg running cos i've another program named SOCK_CIENT working as a client ...
|
|
|
|
|
hi,
i'm so sorry, i've run the program in debug mode and received the following error message,
Unhandled exception in MultiAPI.exe: 0xC0000005: Access Violation
i wonder what this means?
|
|
|
|
|
I can't find anything in what you posted to indicate a problem. Also your description of the behavior does not even indicate that the socket has anything to do with the dialog closing. I can't even think of a theory of what could cause the dialog to close without at least firing an assertion.
You might try using Spy to watch the messages arriving in the dialog that closes to get some indication of why/how it is closing. Also Debugging and Tracing techniques could prove helpful.
Have you ever done a tutorial/sample socket project? I believe MSDN has something like a chat or something that uses CAsyncSocket or CSocket.
-- signature under construction -- -pete
|
|
|
|
|
hi.
does anyone know how to get token identifier from the existing SID?
any ideas?
4apai
There're no impossible tasks. There're tasks that required infinite period of execution time.
|
|
|
|
|
I’d like to make the following call:
_DDataBaseTreeView PE;
GetActiveObject( "NetModeler.DataBaseTreeView.1", NULL, &PE );
Howto…..?
_____________________________
...and justice for all
APe
|
|
|
|
|
try following:
"Looks up a CLSID in the registry, given a ProgID.
HRESULT CLSIDFromProgID(
LPCOLESTR lpszProgID,
LPCLSID pclsid
);"
4apai
There're no impossible tasks. There're tasks that required infinite period of execution time.
|
|
|
|
|
Many thanks!!
_____________________________
...and justice for all
APe
|
|
|
|
|
I need to store binary files in access database.
i've tried with no success (yet) to create an interface between MS-Access table containing an "OLE Object" field type and my application. i thougt to reffer my binary files as Bitmap but still i couldn't load/save data to my DB table.
any idea?
is blob handling can help - how do i store blob?
Cheers,
Yaeli
|
|
|
|
|
Hi!
It may be a silly suggestion but why don't you read the file in binary mode and write everything in a field in the database?
Well... I am a beginner ...
|
|
|
|
|
The maximum field size i have is (which is Memo field type) is several KB and it's textual, i need binary data storage.
|
|
|
|
|
u want to store programmatically or no? i dont how to do this programmatically.
in access just create ole object field, then call contextmenu on the field where u want to insert binary file and then choose insertobject\from file.
maybe this is sollution.
4apai
There're no impossible tasks. There're tasks that required infinite period of execution time.
|
|
|
|
|
Thanks, I need to figure out how to load to DB table & extract from it the Binary file via my application (C++) not manually.
Yaeli
|
|
|
|
|
and there're no interfaces in mc access to duplicate manual work?
4apai
There're no impossible tasks. There're tasks that required infinite period of execution time.
|
|
|
|
|
if there is i'm not familiar with it...
|
|
|
|
|
Consult MSDN article Q234797. The code example does exactly what you want.
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
The MSDN docs says it's a shlwapi function. According to the docs it's declared in shlwapi.h and has been since version 4.71. Guess what? I can't find it!
My shlwapi.h is fairly fresh as it takes IE6 and XP into consideration. Has this function been removed!?
--
...Coca Cola, sometimes war...
|
|
|
|
|
i dont think so.
i got xp. and i find those header in following locations:
(thats .net):
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\Shlwapi.h
(thats vs6):
C:\Program Files\Microsoft Visual Studio\VC98\Include\SHLWAPI.H
4apai
There're no impossible tasks. There're tasks that required infinite period of execution time.
|
|
|
|
|
Does anyone know a good web reource about how windows 2000/xp drivers work? I need to know how inf files, the drivers and the registry work together.
Joel Holdsworth
|
|
|
|
|
Joel Holdsworth wrote:
I need to know how inf files...and the registry work together.
I bought this book many years ago. It had some nuggets in it.
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
WT is the Difference between ATL and STL
and where these r used
thanx
Regards.
|
|
|
|
|
ATL is a set of classes (templated as well as non-templated) which implements a lot of boiler plate COM code.
STL is the standard library as defined in the C++ standard. It contains a number of container classes (lists, vectors, maps, etc), I/O (ostream, istream, fstream, etc), iterators, and algorithms (abstracted functions for performing operations, finding an element, or calculating a compound value over a (iterator) range of container items). I *think* that sums it up pretty well.
You should get books on the subject!
--
...Coca Cola, sometimes war...
|
|
|
|
|
Dear all
What is Callback? (difinition)
when is Callback being used?
Thanks
|
|
|
|