|
|
Thank you very much Mark
|
|
|
|
|
Is there any way to specify which Ethernet adapter a socket connetion uses? I'm creating the socket as follows:
<br />
SOCKET Socket;<br />
int opt_on = 1;<br />
<br />
<br />
Socket = socket(AF_INET, SOCK_STREAM, 0);<br />
<br />
if(Socket == INVALID_SOCKET)<br />
return - 1; <br />
<br />
if( setsockopt( Socket, SOL_SOCKET, SO_REUSEADDR, (char*)&opt_on, sizeof (opt_on) ) == SOCKET_ERROR )<br />
{ <br />
<br />
return -1;<br />
<br />
}
<br />
cliAddr.sin_family = AF_INET;<br />
cliAddr.sin_addr.s_addr = inet_addr( "169.254.148.9" );<br />
cliAddr.sin_port = htons( 4200 );<br />
<br />
if ( connect( Socket, (struct sockaddr *)&cliAddr, sizeof(cliAddr) ) == SOCKET_ERROR )<br />
{<br />
<br />
GetSocketError();<br />
return -1;<br />
<br />
}
<br />
The connection will always try to use the first available network adapter, which is not necessarily the one connected to the requested port. Is there a way to change this without having to specify different domains?
Thanks.
|
|
|
|
|
masnu wrote: Is there any way to specify which Ethernet adapter a socket connetion uses?
For a local socket, that's what the bind() function is for.
masnu wrote: The connection will always try to use the first available network adapter, which is not necessarily the one connected to the requested port.
I'm confused here. The port you specified is for the destination address, not the
local address. Again, use bind() to bind a socket to the adapter with the specific
address before calling connect().
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Been a while, but if i recall correctly,
- use GetAdaptersInfo to walk through the adapters
- for each adapter you can walk its list of (local) IP addresses
- create the socket then bind to the local address for the adapter you want
- after the bind connect to the desired peer
...cmk
The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.
- John Carmack
|
|
|
|
|
Is there a way how to catch system messages in a driver created by DDK ?
directly from win or using some way like callback functions in WIN32
<br />
switch(Msg){<br />
case WM_CLOSE:<br />
...<br />
break;<br />
}<br />
thank you for any support
modified on Wednesday, January 09, 2008 11:24:13 AM
|
|
|
|
|
Not directly, no. Kernel mode has no concept of what a "window" is. You'd need a user-mode component somewhere.
Judy
|
|
|
|
|
Using unicode what is the proper method for formatting currency to have the symbol, separators, and sign(minus) available?
|
|
|
|
|
Use GetCurrencyFormat() .
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
|
Hi again.
I always have problems with templates . I'm not able to create two template classes with an implicit cast from one to the other (for the same template type). Without the template there are no problems:
class Class1
{
public:
Class1(){};
};
class Class2
{
public:
Class2(){};
Class2(Class1 &mat){};
};
void main()
{
Class1 C1;
fun(C1);
}
But with the template:
void fun(Class2 a){};
template <class T> class TClass1
{
public:
TClass1(){};
};
template <class T> class TClass2
{
public:
TClass2(){};
TClass2(TClass1<T> &mat){};
};
template <class T> void funT(TClass2<T> a){};
void main()
{
TClass1<int> TC1;
funT((TClass2<int> )TC1);
funT(TC1);
}
The compiler is Visual C++ 6.0.
Does anyone know the reason and/or an alternative solution to do this?
Thanks
|
|
|
|
|
No luck, my friend: you simply cannot instantiate a TClass2 object without speciying its template argument.
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.
[my articles]
|
|
|
|
|
I need to set/change the properties of a .txt file (author, title, subject, comment) from a VC++/MFC program. Does anyone know how its done or where that information is actually stored at?
Feather
|
|
|
|
|
This is called compound document properties.
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Hello everyone,
I am using Windows Server 2003 Performance Counter tool to monitor the memory consumed by my process.
The interested terms are working set, virtual bytes and private bytes. My questions are,
1. If I want to watch the real physical memory consumed by current process, which one should I monitor?
2. If I want to watch the physical memory + swap file consumed by current process, which one should I monitor?
3. Any more clear description of what these terms mean? I read the help from Performance Counter tool, but still confused which one(s) identifies the real used physical memory, and which one(s) identifies the real used physical memory + page swap file, and which one(s) identifies the required memory (may not be really allocated either in physical memory or in swap page file).
If there are any related learning resource about the concepts, it is appreciated if you could recommend some.
thanks in advance,
George
|
|
|
|
|
George_George wrote: it is appreciated if you could recommend some.
I recommend Google. If you used for search phrase maybe: MSDN Performance counter "working set"
You would find this[^] in the first page of results
|
|
|
|
|
You're too goo man
|
|
|
|
|
Hi toxcct,
Do you have anything to refer?
regards,
George
|
|
|
|
|
I wasn't replying to you ! Why to hell do you keep struggling voting posts unrelated to your question ?
NO, I have no input for you in this regard; if I had, I would have answered. bad boy
|
|
|
|
|
Hi led,
It is not correct. It is exchange server specific things. Not the general working set of Windows memory model.
regards,
George
|
|
|
|
|
George_George wrote: It is not correct. It is exchange server specific things. Not the general working set of Windows memory model.
George, I think you will find the definitions provided for working set, virtual bytes and private bytes will be the same for the Performance Counters in your own application. If you don't want to trust that statement feel free to continue to use Google as I did to find the general Windows Performance Counters definitions that no doubt exists somewhere on MSDN.
|
|
|
|
|
Hi
I found the definition of working set from.
So, in my understanding working set is the amount of actual RAM current process consumed, not including system page swap file. Do you agree?
--------------------
A process's working set is the set of pages that it has currently in memory. The values for maximum working set and minimum working set are hard-coded in Windows NT and are thus impossible to change. There are three values hard-coded for the maximum working set.
--------------------
http://support.microsoft.com/kb/108449/en-us[^]
regards,
George
|
|
|
|
|
George_George wrote: Do you agree?
I don't agree with your use of the word "consumed". Also that document while dated 2006 only discusses Windows NT 3.1 and 3.5. If the information has not actually been updated for later OS versions, it is likely that things have changed some. Also I am not sure what value this simple view of memory provides. Other articles/blogs discussions provide a far more detailed discussion regarding the complex matters of memory models in modern applications and platforms. Here is one example[^].
|
|
|
|
|
Thanks led,
The article gives me some insights. And I have also do some experiment to monitor memory of some process using perfmon.
Sometimes, I saw working set is larger than vitual memory. I am confused. How could it happen?
regards,
George
|
|
|
|
|
George_George wrote: I am confused. How could it happen?
Well one obvious way it could happen is lag. Lag could exist at various different places with the process of memory management all they way to the perfmon display. perfmon should not be considered real time I don't believe.
led mike
|
|
|
|