|
Hi, i'm trying to check if a port is open in a remote PC, i'm using Winsock API with non-blocking sockets. When i call connect(...) this function doesn´t give me a code if the remote port is open. How can i assure that the port i'm looking for is open??
Tnx
|
|
|
|
|
If you can connect to that port, the port is open.
If connect() fails, it might be that the port is not open, though it could also be a firewall...
Nish
It's seven o'clock
On the dot
I'm in my drop top
Cruisin' the streets - Oh yeah
I got a real pretty, pretty little thing that's waiting for me
|
|
|
|
|
In particular the deque class. If I have multiple threads doing pop_front() s and front() s and others at the same time, will I be in trouble, or is the class thread-safe? Do I have to do my own synchronization code?
Tx
Michel
Michel
If I am wrong or said something stupid, I apologize in advance
|
|
|
|
|
If you do pop_front()s and front()s from multiple threads on the same deque object at the same time, you'd better do some synchronization.
I vote pro drink
|
|
|
|
|
first if this is in twice i am sorry
is there a way to programmatically select an item in a list control and highlight it.
(my view = report)
thank you.
|
|
|
|
|
ctrlList.SetItemState(nItem, LVIS_SELECTED, LVIS_SELECTED);
ctrlList.SetItemState(nItem, LVIS_FOCUSED, LVIS_FOCUSED);
ctrlList.SetItemState(nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
farewell goodnight last one out turn out the lights Smashing Pumpkins, Tales of a Scorched Earth
|
|
|
|
|
If you want to advertise, then pay, and support codeproject. Otherwise p!ss off.
Sorry to dissapoint you all with my lack of a witty or poignant signature.
|
|
|
|
|
Nish
It's seven o'clock
On the dot
I'm in my drop top
Cruisin' the streets - Oh yeah
I got a real pretty, pretty little thing that's waiting for me
|
|
|
|
|
There has to be a more ethical way of free advertising. My friend...I think, you may have made worse for yerself. Notice the comments...if you wanna advertise...pay for it and support our favourite site.
If you can't afford to advertise or care not to...then maybe do it indirectly and still support CodeProject.
Post some code used in your app as examples that others can learn from and use themselves. Certainly this isn't ideal for commercial products cuz you loose your proprietorship and people could use that code for there own apps to compete against yours (I think most are pretty respectful though).
However If your an established commercial vendor you SHOULD have the money to pay for advertisments. If your a struggling small time business then, maybe post some cool code, and indirectly get people interested in your product.
I'm positive this would work better on the CP human psyche cuz well your wasting everyones time advertising here. Which is only gonna make people NOT want to buy your product. But if you shared some sweet code, people liked it...and then noticed it's a small portion of a much better larger product...you might get some bytes (pun intended).
IMFO... I finally used the damn acronym...Yippee!!!
Cheers!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
Very strange situation for me:
I developed a console application,
to implement an NT Service. The service interact with desktop, to make settings changes, thru succesive dialogs.
Because I need to display a table content, I use MSFlexGrid in one of the dialogs. The problem is that the dialog with this control isn't displayed.
I try to make all necessary aditions to may application, to support MFC (as I say, is a console app.) - and it work, I also call
"AfxEnableControlContainer();" (????? I thinked I need this), but the dialog with control is still not displayed. Trying some work in debugger, show me that "OnInitDialog()" is never reached.
Really, I could not figure the right way to make
my application support ActiveX controls.
Does anybody know something about this problem?
Thanks in advance.
|
|
|
|
|
I am not really sure about this, but sometimes calling InitCommonControlsEx does help.
Nish
It's seven o'clock
On the dot
I'm in my drop top
Cruisin' the streets - Oh yeah
I got a real pretty, pretty little thing that's waiting for me
|
|
|
|
|
If you are running a console app, you cannot use Windows. (kind of by definition) If you want dialogs (or any other window for that matter) you need a windows app.
You can probably turn your console app into a windows app with enough work, but its much easier with one of the MS frameworks.
Hope this helps,
Bill
|
|
|
|
|
I agree with Will. (A console can not display a dialog)
But for show a dialog you must to set the type of service like SERVICE_INTERACTIVE_PROCESS....
For the first point, I remember that a guy published a article that displayed a dialog from a console application....
Best Regards....
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
Thanks,
Really my problem was with OLE initialization.
As I said, the service interact ok with desktop,
and all MFC / GUI stuff work well. The single problem
occur when I'm using MSFlexGrid (ActiveX) in one of
my dialogs.
I feel that is something related to OLE support and initialization,
but I don't know exactly how to do this,
in proper way.
|
|
|
|
|
Did you try calling InitCommonControlsEx()?
Nish
It's seven o'clock
On the dot
I'm in my drop top
Cruisin' the streets - Oh yeah
I got a real pretty, pretty little thing that's waiting for me
|
|
|
|
|
Yes, I tryed it.
It doesn't seems to help with ActiveX controls...
Thanks.
|
|
|
|
|
Add AfxOleInit in your initInstance...;)
Best Regards
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
Carlos Antollini wrote:
AfxOleInit
Many thanks!! This is the solution, and work excellent.
I just put it before the point I need it.
Great tip!
Regards.
|
|
|
|
|
The following is my code:
void CFilerecvDlg::OnStartServer()
{
m_button.EnableWindow(false);
CString s_name;
UINT port;
try {
g_sListen.Create(0);
g_sListen.GetSockName(s_name, port);
g_sListen.Bind(port);
g_sListen.Listen();
AfxBeginThread(ServerThreadProc, GetSafeHwnd());
}
catch(CException* e) {
e->Delete();
}
}
UINT ServerThreadProc(LPVOID pParam)
{
CSocket sConnect;
g_sListen.Accept(sConnect);
TRACE ("\nSocket connetced\n");
sConnect.Detach();
sConnect.Close();
return 0;
}
The run fails... A message is issued tellin something like "Thread 0x5425.. has exited with code -1. Memory leak detected!...". g_sListen is a global CSocket variable (in my serverdlg.cpp file). There are no warnings or errors at compile time...
Can anyone tell me where is my mistake???
"Needless redundancy is the hobgoblin of software engineering." - Peter Darnell
|
|
|
|
|
Vladimir Georgiev wrote:
sConnect.Detach();
sConnect.Close();
When you detach, the underlying SOCKET is detached from your CSocket object and it's m_hSocket is cleared. This itself is a leak of sorts as you dont seem to be closesocket()-ing the detached SOCKET anywhere.
Nish
It's seven o'clock
On the dot
I'm in my drop top
Cruisin' the streets - Oh yeah
I got a real pretty, pretty little thing that's waiting for me
|
|
|
|
|
UINT ServerThreadProc(LPVOID pParam)
{
CSocket sConnect;
g_sListen.Accept(sConnect);
TRACE ("\nSocket acepted\n");
sConnect.Close();
return 0;
}
there is no TRACE in the debugger also after executing with this piece of code...
"Needless redundancy is the hobgoblin of software engineering." - Peter Darnell
|
|
|
|
|
Vladimir
You are not doing this the right way at all.
You are calling GetSockName() on an unconnected socket. That will result in weird results. I suggest that you seriously take up a book and just browse through the basic. It should take you only 10-20 mins to get adjusted to it.
And one piece of advice :- The MFC socket classes are not thread-safe and you can run into all sorts of trouble using them. As far as possible use the native Winsock API.
Nish
It's seven o'clock
On the dot
I'm in my drop top
Cruisin' the streets - Oh yeah
I got a real pretty, pretty little thing that's waiting for me
|
|
|
|
|
Nish [BusterBoy] wrote:
And one piece of advice :- The MFC socket classes are not thread-safe and you can run into all sorts of trouble using them. As far as possible use the native Winsock API.
This is sort of true, sort of not true. The MFX Socket classes don't work very well multi threaded. But they do work.
However, looks to me like you'd be far better off staying single threaded, but using CAsyncSocket.
Sorry to dissapoint you all with my lack of a witty or poignant signature.
|
|
|
|
|
All the traces lead to this piece of code:
// The same socket better not be blocking in more than one place.
ASSERT(m_pbBlocking == NULL);
_AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState;
ASSERT(pState->m_hSocketWindow != NULL);
BOOL bBlocking = TRUE;
m_pbBlocking = &bBlocking;
CWinThread* pThread = AfxGetThread();
in a socketsomething.cpp
"Needless redundancy is the hobgoblin of software engineering." - Peter Darnell
|
|
|
|
|
ASSERT(pState->m_hSocketWindow != NULL);
this assertion failed... If you can think of something, please post it.
"Needless redundancy is the hobgoblin of software engineering." - Peter Darnell
|
|
|
|