|
i want to connect my application to all servers on LAN using TCP sockets.
UINT CD1MessageDlg::ScanLAN(LPVOID pParam)
{
unsigned int tf0, tf1, tf2, tf3;
CString tip = "";
CD1MessageDlg *t;
t=(CD1MessageDlg*)pParam;
BOOL x = 1;
for (tf0 = 192; tf0 <= 192; tf0++)
{
for (tf1 = 168; tf1 <= 168; tf1++)
{
for (tf2 = 109; tf2 <= 117; tf2++)
{
for (tf3 = 1; tf3 <= 255; tf3++)
{
tip.Format("%u.%u.%u.%u", tf0, tf1, tf2, tf3);
t->m_sConnectSocket.Connect(tip, 50000);
}
tf3 = 0;
}
tf2 = 109;
}
tf1 = 168;
}
return 0;
}
one more ques. can i reuse the same socket again and again for finding server as i'm doing in my this code.Future Lies in Present.
Manmohan Bishnoi
|
|
|
|
|
you probably can - but if you fail to connect your socket will 'block' for the timeout, so you may want to use a socket pool
furthermore,
Manmohan29 wrote: for (tf0 = 192; tf0 <= 192; tf0++) { for (tf1 = 168; tf1 <= 168; tf1++) {
loops are redundant, and in
Manmohan29 wrote: tip.Format("%u.%u.%u.%u", tf0, tf1, tf2, tf3);
you're not specifying a port - so what do you hope to connect to ?
|
|
|
|
|
Garth J Lancaster wrote: for (tf0 = 192; tf0 <= 192; tf0++) { for (tf1 = 168; tf1 <= 168; tf1++) {
loops are redundant
this code is for only testing purpose. i will modify my function to take ip address range from user.
Garth J Lancaster wrote: tip.Format("%u.%u.%u.%u", tf0, tf1, tf2, tf3);
you're not specifying a port - so what do you hope to connect to ?
i'm specifying port 50000
t->m_sConnectSocket.Connect(tip, 50000); Future Lies in Present.
Manmohan Bishnoi
|
|
|
|
|
Manmohan29 wrote: i'm specifying port 50000
my mistake - I had forgotten the Connect() parameters - I was thinking you were specifying the timeout ..
in which case, as I said, if you get a connect fail, you'll have to wait for the timeout for the socket to become available again I think ...
'g'
|
|
|
|
|
Consider the possibility to use "multicast" http://en.wikipedia.org/wiki/IP_multicast[^].
Check with your network administrator if this is possible in you environment, before spreading a potentially huge number of independent identical flows, or you may risk to sit down your network.
2 bugs found.
> recompile ...
65534 bugs found.
|
|
|
|
|
emilio_grv wrote: Check with your network administrator if this is possible in you environment
It is not possible in our college network as told by our N/W Admin.
Thanx. Future Lies in Present.
Manmohan Bishnoi
|
|
|
|
|
Hello all!
I am currently not the best programmer out there but am learning every day! I am faced with a small problem though, I know what my goals are and want to start focusing on them but im stuck choosing a compiler.
I want to do embedded arm development and move into linux arm based development and driver/gui development but at the same time I gotta face the fact that 90% of the market is windows based so I will need to be able to write windows programs to communicate with my devices. My questions is should I dive into gcc with a full linux distro and do all my development on that and then use say Visual Studio to write all my windows based client software?
Another option is to use windows exclusively and say minGW with Code::Blocks or even setup a GCC toolchain (one for windows and one for arm using Cygwin) and using wxWidgets and QT/SDL based code for portability.
The main issues is I am still a beginner and should I go all out with the environment or choose one compiler to stick with for now? Im worried that changing compilers (especially from a VS MFC setup to GCC) will be a large setback so why not start out on the end road eh?
Thanks!
|
|
|
|
|
You are worrying too much. Both VC++ and GCC are pretty stndard compliant these days and you won't have too much troubles switching from one to another.
|
|
|
|
|
Hi Member
I found keyboard hook example from codeproject.
Click here
[]
And follow these step
1.Copy KeyHook.h, KeyHook.dll, Keyhook.lib into your project directory, add KeyHook.lib into your workspace by "Project - Add to Project - Files", and include KeyHook.h where needed.
2.Call InstallKeyHook to install the hook.
3.Call AddKeyEntry to register key entries which consist of information on what kinds of keyboard events should be captured and whom should be notified.
4.Call GetKeyEventResult to retrieve information of the captured key events after your application window receives the notification messages, with values of the wParam and lParam unaltered.
5.Call UninstallKeyHook to release resources as soon as you've finished using the hook.
But Nothing happen.
I just want to get key when Key is press on application(
application may be notepad,word or internet explorer).please help me
|
|
|
|
|
You should post your question at the article's thread.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hey!
I know your woes I had been looking for a keyhook library for quite some time when I found this one and after a month of playing with it I like it ALOT! Its way easier to use than others or writing my own. I am working on writing a consume function for it so that it captures key events and filters them.
I used it in a plugin for Mach3 CNC software but you can see how it works if you dig through my code at THIS POST[^]
Good luck!
|
|
|
|
|
Thanks for reply but it's not working.Can you give me some code example.Please help me it's very diffult for me..Please help
|
|
|
|
|
This is the relevant info from my project in the file: PluginTestDlg.cpp
<br />
#include "KeyHook.h"<br />
<br />
#define WM_MY_MESSAGE (WM_APP + 100)<br />
<br />
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
<br />
LRESULT lRes = InstallKeyHook();<br />
ASSERT(lRes == KH_OK);
<br />
KEYENTRY ke;<br />
ke.nMessage = WM_MY_MESSAGE;
ke.hCallWnd = m_hWnd;
ke.hHookWnd = 0;
ke.iCombKeys = 0;
ke.iIndicators = 0;
ke.iKeyEvent = KH_KEY_DOWN | KH_KEY_UP;
ke.iMinVKCode = 0;
ke.iMaxVKCode = 255;<br />
<br />
lRes = AddKeyEntry(&ke);<br />
ASSERT(lRes == KH_OK);
<br />
<br />
LRESULT CPluginTestDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)<br />
{<br />
KEYRESULT kr; <br />
<br />
UINT nMask = KH_MASK_EVENTTYPE | KH_MASK_PRINTABLECHAR;<br />
<br />
LRESULT lRes = GetKeyEventResult(wParam, lParam, &kr, nMask);<br />
ASSERT(lRes == KH_OK);
<br />
if (kr.chPrintableChar != 0)<br />
{<br />
CString sEvent;<br />
if (kr.iKeyEvent == KH_KEY_DOWN)<br />
sEvent = _T("Key Down");<br />
else if (kr.iKeyEvent == KH_KEY_UP)<br />
sEvent = _T("Key Up");<br />
else if (kr.iKeyEvent == KH_KEY_REPEAT)<br />
sEvent = _T("Key Repeat");<br />
else<br />
ASSERT(FALSE);
<br />
CString sMsg;<br />
sMsg.Format(_T("Event: %s\nCharacter:%c"), sEvent, kr.chPrintableChar);<br />
MessageBox(sMsg);
}<br />
<br />
return (LRESULT)0;<br />
}<br />
<br />
<br />
UninstallKeyHook();<br />
-The ke structure is how you setup the hook and all options are documented in the KeyHook.h header
-In my kr structure I use the nMask to decode the message unto useful info then check if its a printable character and issue a msgbox for each type of key state.
-ASSERT(lRes == KH_OK);is a sanity check, error codes are listed in KeyHook.h
-#define WM_MY_MESSAGE (WM_APP + 100) I have no idea where I got this from... But it works...
Sorry to reply so late I have been away for work.
|
|
|
|
|
Please send me Vernam Cipher C code in esiest way, where user put the Plain text,key or cipher text.Actually i want to say where key is not generated randomly.
|
|
|
|
|
At a minimum, read #2 here."One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
Punima Sen wrote: Please send me Vernam Cipher C code
Try the quick answers, there is a GimmeCode tag. If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
People do not handover code here, they rather help others to write code themselves.
If code is what you're after, you could easily search Google for implementations of Vernam Cipher.
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
hi everyone. Somebody can explain to me how to send or receive sms by using mfc-lib. I'll be Grateful for any help.modified on Saturday, February 20, 2010 9:43 AM
|
|
|
|
|
Did you search for a CodeProject's article? I found: "An SMPPLIB with COM Support".
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I'm currently working on a rewrite of my most recent article Monitoring and Controlling a Recursing Function in a Worker Thread and would love to know your opinions on the fowing block of code I use in the worker thread...
do {
Sleep(1);
}while (pMyView->m_strCurFile != pMyView->m_strConfirm);
This has the effect of slowing things up enough so that the main thread can display a gratifyingly fast moving display of files flash past in the text box on the dialog. I was going to say that, without it, the dialag doesn;t display any file information until the thread has stopped running but I've just tried it and, in fact, with out it I get an Access Violation error!
It doesn't seem like a very nice bit of code to me. Could it be replaced with WaitForSingleObject or something, somehow?
Interestingly, if I try and speed the thread up by putting in an extra mod test so that it only runs every tenth loop...
if (n % 10 ==0){
do {
Sleep(1);
}while (pMyView->m_strCurFile != pMyView->m_strConfirm);
}
...this also causes problems...
|
|
|
|
|
In general Sleep is bad form, although as with any rule of thumb there are exceptions. Unfortunately, from what I've seen your code isn't one of them.
Ben Aldhouse wrote: It doesn't seem like a very nice bit of code to me. Could it be replaced with WaitForSingleObject or something, somehow?
But what's you're problem? From what I gather, what you should be worried about is what's causing the access violation. Never stop a crash by poking around blindly till it stops: lose the Sleep and find the cause of the real problem (the access violation). The first thing I'd do is kill the Sleep , run the code under a debugger and get a stack trace of the access violation. I suggest posing it.Steve
|
|
|
|
|
Thanks for this Stephen, you have hit the nail on the head, I think, regarding the access violation. I have had a reply indicating that my use of CString objects is causing this. I will investigate this.
|
|
|
|
|
I took a brief look at your article. I have some humble comments/observations.
1.) Yes you should get rid of the call to Sleep. I have never found any use for this API call and in my opinion it is probably the most abused function on planet Earth. I recommend the following:
a) Add: HANDLE hEvent; to your CFormView.
b) Call hEvent = CreateEvent(NULL,FALSE,FALSE,"Your-GUID"); in your constructor.
c) Call SetEvent(hEvent); in your OnCURFILEEVENT message handler.
d) Replace the Sleep(1) with: WaitForSingleObject(hEvent,1000); and then reset the event with ResetEvent(hEvent); immediately afterwards.
2.) Regarding your access violation... I instantly recognized the problem. You are incorrectly accessing a CString object that lives inside your CFormView from the worker thread. CString is NOT thread-safe. You need to replace the pMyView->m_strCurFile assignment with a message function such as SendMessageTimeout[^] and this will fix the Access Violation in your article.
Best Wishes,
-David Delaune
|
|
|
|
|
I am very grateful to you, David, for looking at my code. You only looked at it briefly but were able to provide me with these very specific points of help. It's humbling for me because it will take longer for me to try them out than it took for you to look through my code, understand what I was trying to do and make these suggestions. I will go through them carefully, though. You clearly know what you are writing about.
|
|
|
|
|
Hi Dave,
I've got the project working with the following alterations...
Here is the sending code in MakeListing...
CString* pString = new CString(FindFileData.cFileName);
SendMessageTimeout(pMyView->GetSafeHwnd(), CURFILEEVENT, (WPARAM)pString, 0, 0, 1000, 0);
delete pString;
Here is the receiving function...
LRESULT CRecThread2008_64Dlg::OnCURFILEEVENT(UINT wParam, LONG lParam)
{
CString* pString = (CString*)wParam;
CString tempStr = pString->GetBuffer();
m_iNoFiles++;
CString tString=LPCTSTR("");
tString.Format(_T("%d"),m_iNoFiles);
m_strNoFiles = tString;
m_strFileList= tempStr + _T("\r\n")+ m_strFileList;
m_strFileList = m_strFileList.Left(500);
UpdateData(FALSE);
return 0;
}
And it works without the sleep block - so I have got rid of that!
I think I getting near to a point where I can start to rewrite the article...
Thank you for your help with this,
Ben.
|
|
|
|