|
How about a code snippet of what you are trying to do?
|
|
|
|
|
hi,
here is what i want to do, the program is connected to the server already. (I don't know how to connect, i just use my friends dad program to connect)
int message;
message = 0x5FF0023A;
send(s, message, strlen(message), 0);
It says send can't convert parameter 2 from int to const char *
and it says the same thing about strlen.
Jimmy
Just cause I am 15, doesn't mean I'm dumb! (I'll really be 4 on Feb. 29...the year 2004)
|
|
|
|
|
NewHSKid wrote:
the program is connected to the server already. (I don't know how to connect, i just use my friends dad program to connect)
Does that mean he is supplying you with a valid socket descriptor?
Given that the second parameter of send() is expecting a char* , you'll need:
int nMessage = 0x5FF0023A;
char szMessage[9];
sprintf(szMessage, "%d", nMessage);
int nBytes = send(s, szMessage, lstrlen(szMessage), 0);
|
|
|
|
|
Hi,
Thanks for helping.
So when i use that code, the receiving program will get the hex number of 5FF0023A?
Jimmy
Just cause I am 15, doesn't mean I'm dumb! (I'll really be 4 on Feb. 29...the year 2004)
|
|
|
|
|
No, the recv() function on the other end will receive "5FF0023A" as a char* . It can convert that to an int eger (long actually) with strtol() .
long lMessage;
char szMessage[9], *stop;
int nBytes = recv(s, szMessage, sizeof(szMessage), 0);
lMessage = strtol(szMessage, &stop, 16);
|
|
|
|
|
try this :
send(s, (const char FAR*)message, sizeof(message), 0);
though the sizeof(message) param can just be 0, as message oriented sockets will send a zero-length transport datagram.
|
|
|
|
|
Windows Sockets can be highly complicated as well as windows programming for people somewhat new to programming. From your posts it seems as if your skipping quite a few steps in the learning process. I think if you ended up writing a program that does what you want now it will be mostly cut/paste code and you won't get much out of the experience. This program would be an excellent learning experience, but you should make creating it more of a long range goal.
|
|
|
|
|
Hex numbers are usually preceded by the characters 0x to indicate the following four byte code is a hex value and not an integer. So, the end message should read something like 0x5FF00231. I would use an integer (because hex numbers are generally used to display a 32-bit integer unsigned or signed in Base 16 format - remember that, especially if you want to get into the games industry ). So my code in WinMain would look like :
int WinMain(blah...)<br />
{<br />
int myhex = 0x5FF00231;<br />
char message[32];<br />
sprintf(&message[0], "0x%x", myhex);<br />
::MessageBox(NULL, message, message, MB_OK);<br />
}<br />
}
Hope that helps you
|
|
|
|
|
to be absolutely correct you could use the \0 null terminator to end the string. I always use at least a 32 byte string cos memory byte placements like multiples of 32 to avoid memory padding.
sprintf(&message[0], "0x%x\0", myhex);
|
|
|
|
|
That is what I want to do later on, I want to program video games.
Can you explain what the char message[32]does?
|
|
|
|
|
It reserves a spot (named "message") in memory for 32 char acters.
|
|
|
|
|
but I only need 4 bytes? should i change the 32 to 4 then?
Jimmy
Just cause I am 15, doesn't mean I'm dumb! (I'll really be 4 on Feb. 29...the year 2004)
|
|
|
|
|
You don't need this at all. Dangleberry's post was just showing you how to convert a number to a string (which was then displayed in a message box).
|
|
|
|
|
The only actual "numbers" in the computer are semi-conductor gates that are either on or off.
That is fine for the computer, but most people need something visual to help us understand what is going on.
To the computer, all numbering base sytems look the same - binary. It is only when outputting the graphical representation of those numbers that you need to worry about data types and base.
So, the number 255 is represented in the coputer by 8 logic gates being on: 11111111
If you, the human, wants to see that number in hexadecimal, then you tell your program to format that number in base 16 and you see "FF". Now, the characters "FF" are represented by the ascii code for the letter 'F' - which is 70 or x40 - so if you looked at the raw bits for the characters "FF" you would see 70 70 or the bits 01000110, 01000110. So what happened??? You started with 11111111 and ended up with 01000110, 01000110!
The confusion comes from figuring out what format the reciever of the data is expecting. That is what function headers are for. They define how to interperet the bits that are being sent.
|
|
|
|
|
Can anybody tell me if it is possible to host the web browser control that comes with internet explorer without using some kind of framework such as ATL or MFC. I've been looking through MSDN and from what I've read it seems to be possible but they do not really explain how. The samples always use either ATL or MFC.
Systems AXIS Ltd - Software for Business ...
|
|
|
|
|
Hi,
I have a java application. It communicates with a VC dll, using JNI. This dll launches IE, using CoCreateInstance(). When I aceess the IWebBrowser2 pointer, I have received from CoCreateInstance(), it works fine for the first time. But when I try to access it (for invoking navigate2()), I get an error with code 0 (ERROR_SUCCESS). Can you tell me what is wrong? What is the meaning of ERROR_SUCCESS? Am I missing any initialization? Is some method needs to be called in every JNI method? Is this happening because the launched browser is a separate process, something outside the scope of a JVM?
HRESULT hr = CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_ALL, IID_IWebBrowser2, (void**)&m_spBrowser);
- Nikhil
|
|
|
|
|
Hy.
I want to make a audio/video server that caprures video from my web cam which can be opened with the "windows media player"(open url).
andrei
|
|
|
|
|
I am in hell with this. Imagine a dll and an app that want to use the same instance of a static class (for management purposes) so they can share its knowledge (such as common search paths used when loading files). To mean this sounds awesome, but do you think there was a clean way to do it that is well documented, not a chance. Well I can't find one anyway. Just to clarify, I have a class with static functions and static members that I access using MyClass::DoSomething(), I want *any* loaded dll to absorb this instance of the class and *not* construct another in its own virtual memory address space. What is the best way to go about doing it, is there an article that can save my ever-decreasing hair? Thanks all.
|
|
|
|
|
static anythings and DLL's are always going to be tricky.
You might want to rethink the design a bit and see if you can reorganise the code to use COM objects.
It may mean that you can just pass interface pointers between the application and the DLL's. It may make extensibility and maintenance far simpler, because the smarts for querying for interfaces, and for defending against crossing address spaces, are all inside the component.
If you can keep you head when all about you
Are losing theirs and blaming it on you;
If you can dream - and not make dreams your master;
If you can think - and not make thoughts you aim;
Yours is the Earth and everything that's in it.
Rudyard Kipling
|
|
|
|
|
Nice idea, I like the sound of that, I think I'll investigate the COM approach. Never done any COM before mind, any hints, tips, ideas or articles? Thanks for the suggestion mind, its always nice to hear a fresh idea when your staring at a brick wall
Thanks again,
Alan.
|
|
|
|
|
It takes a while to get your head around COM, but it really makes sense when it all starts to come together. COM really is one of the key foundations for everything in windows today - it explains why you need a registry, why you need install programs, how ActiveX controls really work - and lots of other things.
Microsoft are now pushing C# and VB.NET and Managed C++ which are all really neat ways to play with COM in a safe little sandbox. Except now they've made it even easier to write COM components - which are now called assemblies.
Mike Dunn's articles (as always ) are a good place to start
http://www.codeproject.com/com/comintro.asp[^]
http://www.codeproject.com/com/comintro2.asp[^]
If you can keep you head when all about you
Are losing theirs and blaming it on you;
If you can dream - and not make dreams your master;
If you can think - and not make thoughts you aim;
Yours is the Earth and everything that's in it.
Rudyard Kipling
|
|
|
|
|
By the time you were done writing your COM dll, you would end up with a perhaps overly fancy system of just Gets and Sets on some data items.
You could always put the data into a shared memory segment and then write accessor functions inside a DLL. Protect the memory with a Mutex, since I think you would need to do that anyway with the COM dll.
Your static C++ class could be functions that wrap the calls into the DLL.
If you don't want to deal with the shared memory, then you could always declare the data to be in its own shared data segment, and then each copy of the dll loaded into each process would only see that same memory.
|
|
|
|
|
Yes, I have tried this approach to no avail. Using the #pragma data_seg approach. Are there any really simple examples that show how to create such a system? For instance I think I fell down not knowing how to create the object in the application ready for when the dll loads. I had in the app AND dll:
#pragma daa_seg(".myseg")
myclass interface;
#pragma data_seg()
Is this correct or do I only have to declare it once in the app? I also tried a simple int arse = 0; in the dll and app then loaded the dll in the app, modified the int, and still the int was the same in the app (which was different to the modified dll). Just can't see why its failing. Of course if a solution could be found this way it would be preferable because I wouldn't have to learn all that COM stuff (although very interesting, and would be very useful in this instance, this way would save me lots of time ). Any chance of breaking it down into baby steps using an int in a dll and exe as an example?
Cheers, Alan.
|
|
|
|
|
by the way I did add the data_seg RWS stuff to the linker
|
|
|
|
|
Neat, thanks, always wondered what this COM stuff was all about.
|
|
|
|