|
Your application will receive an FD_WRITE event shortly after a connection is made. If your "write" operation receives a WSAEWOULDBLOCK result, your application will find out that sends are again possible when an FD_WRITE network event is recorded and the associated event object is set.
"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
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Hi David,
Thanks for your reply.
i am sorry, i couldn't get what you mean.
i understand that application will receive an FD_WRITE event shortly after a connection is made but there is no data to send at that time.
here is scenario i am trying for
1) connect to server
2) Connection established - FD_WRITE event is receive.
3) there is no data to send to server
4) some other event fired (not related to socket) -- data arrived, so store the data.
5) now data is available to send to server
in the above steps 4 and 5 will happen one after the another. how can i raise FD_Write event after the data is available (means step 4) ?
|
|
|
|
|
Vijjuuu. wrote: how can i raise FD_Write event after the data is available (means step 4) ? Why would you need to raise the FD_WRITE event? It is sent to your application to let it know that it can now send data to the socket.
"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
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Thanks again David,
i understood that its lets application know that it can send data to the socket, but when there is no data to send ?
and does it mean after initial FD_Write (the time after connection established) , FD_WRITE will be polled to application to let know that it can send data ?
i really appreciate your patience. Thanks.
|
|
|
|
|
Vijjuuu. wrote: ...but when there is no data to send ? Then don't send any.
Vijjuuu. wrote:
and does it mean after initial FD_Write (the time after connection established) , FD_WRITE will be polled to application to let know that it can send data ? Did you read the documentation that goes with that event? Your application gets the initial FD_WRITE event which means it can start sending data to the socket. In the event that whatever "send" function you are using returns WSAEWOULDBLOCK , you would then have to wait for the next FD_WRITE event to resume sending data to the socket.
"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
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
As I understand it, the FD_WRITE message means you have a
connection and room in the output buffer to accept data.
After you get FD_WRITE, use send() to send data
when you have it.
modified 29-Jun-16 2:58am.
|
|
|
|
|
when i am using wmi functions "SELECT * FROM Win32_Processor", can i somehow get dll files from which is that information loaded?
|
|
|
|
|
|
Hi,
is it possible to print class members, like in Visual Studio in the "Immediate Window", when i write a class name there is an output with all members/variables in the window?
Is there an API for this?
Thanks for help
bosfan
|
|
|
|
|
In the debugger or as a simple output (printf/cout) ?
I'd rather be phishing!
|
|
|
|
|
Are you wanting reflection, like Java has?
"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
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Hello,
sorry to all because its late answer, yes reflections should be the solution.
Thanks
|
|
|
|
|
Such a thing does not exist, at least not directly, in C++.
"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
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Nope, you have to develop it yourself.
|
|
|
|
|
Hi,
sorry ,i'm little late, thanks for answer.
regards
|
|
|
|
|
|
In C++ this concept are overloading and overriding
Can i use this concept in C?
modified 16-Jun-16 10:40am.
|
|
|
|
|
What would the purpose be?
"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
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
|
Yes you can but if you want to do it statically it has to be done via compiler directives and smart macros and it's used by embedded programmers in some specific situations. It is not something we encourage to use like the C++ feature but there are times it is the only way to achieve what is needed.
It has been improved and is portable and easy if your compiler accepts the C11 standard word "_Generic".
Here is a reasonable link on it
Rob's Programming Blog: C11 - Generic Selections[^]
You can see the general form of the macro which provides the overloading
#define acos(X) _Generic((X), \
long double complex: cacosl, \
double complex: cacos, \
float complex: cacosf, \
long double: acosl, \
float: acosf, \
default: acos \
)(X)
As the C community is still one of the larger programming languages the standard has been altered over time. In time order the main standards are C87, C90, C99, C11. Microsoft and Visual Studio has been one of the slowest compilers to include the new standards. Visual studio 2013 was the first version to cover most of C99 but it has been available in GCC and many micro-controller C compilers for many years.
In vino veritas
modified 16-Jun-16 12:55pm.
|
|
|
|
|
Wow, never heard about that, before.
|
|
|
|
|
Well,
Nearly per Definition you can Not use a C Compiler to compile CPP!
You do not understand where it all came from, but I'll ex[plain.
'C' was created by Brian Kernigan and Dennis Ritchie as a High Level Language, with the flexibility of Assembler.
It has a straight forward flat language structure, needing a very simple symbol table. (The Symbol Table is a database used by the Compiler, to keep track of what symbolic value is stored where) This database would not allow for items like 'MyStruct.MyMember'.Instead, it kept a separate Database of Structure Names.
When Brian Stroustrep started CPP, it was initially a 'PreCompiler' which would write a 'C' acceptable set of variable names. For Intance: void MyStruct::MyFunct(int,char,int) would be translated into something like 'FnMyStruct_MyFunct_int_char_int__void'
and then let the 'C' Compiler do it's Job.
That worked of a kind, but, what if one also were to write a 'C' function: 'FnMyStruct_MyFunct_int_char_int__void(int Param)'
Unlikely, but, a potential problem. Brian Stroustrep had to use symbols and characters acceptable to the 'C' language.
When proper CPP Compilers appeared at the scene, the decoration became more flexible. For Instance:
'FnMyStruct?MyFunct??int_char_int???void' Such a name cannot be passed as a 'C' Name. (Note: I do not state that the scheme here is actually used, it is just an illustration to explain the point of how a CPP Compiler generates different code compared to a 'C' compiler)
A CPP compiler can compile 'C' Code. The otherway around, a 'C' Compiler accepting CPP Code is never going to happen, for the reasons stated above.
Now, As others have Asked:
what is your problem!
Perhaps you want to Include a 'C' Module in your 'CPP Project'
Bram van Kampen
|
|
|
|
|
Hi,
I am working on a project in Visual C++ 6.0. I have included the following statements in a file:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
rename( "EOF", "adoEOF" )
#import "c:\Program Files\Common Files\system\ado\msadox.dll" \
no_namespace
I am getting the following error:
error C2556: 'enum DataTypeEnum __thiscall ADODB::Field20::GetType(void)' : overloaded function differs only by return type from 'enum ADODB::DataTypeEnum __thiscall ADODB::Field20::GetType(void)'
Any idea why this error is generated...?
How to resolve the above issue...?
Regards,
mba
modified 16-Jun-16 3:44am.
|
|
|
|
|
The definition of that enum exists in two places. You need to check the libraries to see how you can eleiminate one of them. I would guess it may have something to do with the second import using the no_namespace option.
|
|
|
|
|
Richard was spot on ADO and ADOX both use the no_namespace option you need to rename the functions of one into a renamed namespace
#import "..\..\..\dll\msadox.dll"
#import "..\..\..\dll\msado15.dll" no_namespace rename("EOF", "EOFADO")rename("DataTypeEnum", "DataTypeEnumADO") rename("EditModeEnum", "EditModeEnumADO") \
rename("FieldAttributeEnum", "FieldAttributeEnumADO") rename("LockTypeEnum", "LockTypeEnumADO")
You could choose to import the ADO and rename the ADOX functions, rename the one you use least.
In vino veritas
|
|
|
|