|
Each port can simultaneously connect to a single server, so that is correct.
However, you can start a seperate thread which monitors ALL the open ports. Afterall, checking a port isn't a long process, so this shouldn't cause any timing issues.
Now, instead of opening dozens of ports, I suggest that you formulate the data sent by the server, if that is possible. Place a identification number in front of each data packet to tell your program from which 'virtual port' this packet is coming from. This way you can open 'multiple' connections to a single server using only single physical port.
The event driven method is appropriate, considering that you created a seperate thread to handle the port. Now, when a port event occurs, the handler thread is notified. At this point, save the data to a temporary variable, free the port and notify your application that new data is available. This way the port is freed quickly, but the transfer of data from the port to the application isn't in a terrible hurry. This is called data buffering.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
Sorry, 'bout that, now I understand what you are asking.
No you don't need SDK.
Theoretically, constructing WsaData explicitly requires SockAddr_in struct but I had an instructor once who said that dynamic sockets are possible but never showed me how.
Also, I've never tried to use a "Send" socket and a "Receive" socket (I assume this is what you are trying). I'll have to think more about this one using winsock2.
|
|
|
|
|
Stan the man wrote:
EACH port can only connect to ONE server. Is this correct?
1. Yes, but only if you use TCP, because it is connection oriented.
2. No, if use UDP datagramms. Datagramms are "broadcasted" therefore they can have several recipients.
Bunburry
|
|
|
|
|
Hi,
How can I evaluate the value of checkbox called "check1" (or something like it), in my setup project, if the box is checked, I need to place a shortcut on the desktop!
Thanks!
|
|
|
|
|
If this is MFC, use CButton::GetCheck() . Otherwise, send a BM_GETCHECK message to the control.
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
OK, but this isn't MFC --> this is a SETUP project!
As far is I know this one has nothing to do with MFC (or am I wrong?)
|
|
|
|
|
Well, since your question was posted in the VC++ forum, it was assumed to be a VC++ question or an MFC question.
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
That's right,
but where do I have to place my question (I don't know!)?
|
|
|
|
|
My first thought would be in a forum specializing in the language in which your setup application is written.
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
Okay,
I've written my application in mfc c++, but what has that to do with my setup project? I jsut need an answer for the development projects, not for mfc!
|
|
|
|
|
BoudewijnEctor wrote:
I've written my application in mfc c++...
Yet here you indicate otherwise. I initially provided you an answer for both VC++ and MFC. One of them will apply.
BoudewijnEctor wrote:
I jsut need an answer for the development projects, not for mfc!
The fact that you are writing a setup project (it could be a game, an accounting package, a printer driver, etc) is irrelevant. You wanted to know how to "evaluate the value" of a checkbox and I provided you with two options. If those answers are not right for your situation, perhaps you should rethink your initial question.
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
what setup ? there are tons of them ...
Maximilien Lincourt
"Never underestimate the bandwidth of a station wagon filled with backup tapes." ("Computer Networks" by Andrew S Tannenbaum )
|
|
|
|
|
My program is setting the default printer to Distiller which is then receiving the print job and writing PDF's to the specified location i.e. Distillers Port.
On some Windows 2000 PC's we are unable to set the Distiller Port, so I was wondering whether it is possible to reset the Distiller Port in code, on Windows 2000.
I am setting the Default Printer to Distiller with SetDefaultPrinter( ... ) and then issuing a Windows Broadcast message to all apps. For NT4 I am using WriteProfileString( ... ) and then issung a Broadcast message.
I would appreciate any help, or advise from anyone who has had a similar issue with Distiller and not being able to Add a PDF Port to a Windows 2000 PC.
|
|
|
|
|
Hi everyone,
I wasn't sure if this is a COM issue or MFC issue, so I also posted this question in the COM message board...
I have an MFC app (with a CWinApp-derived object) that uses COM objects (Crystal Reports). The COM library is imported into my project via the #import directive. I'm using VStudio 6.0 sp5.
I've created a global object called _com_init:
struct ComInit {
ComInit() { ::CoInitialize(NULL); }
~ComInit() { ::CoUninitialize(); }
} _com_init_;
This way, I guarantee that COM will initialize before the _main() and terminate after the _main().
When my program reaches ~ComInit() and calls ::CoUninitialize(), I see the following message in my Debug Output Window:
First-chance exception in MyApp.exe (OLE32.DLL): 0xC0000005: Access Violation.
Any ideas? I've looked up other CoUninitialize threads in these forums, but couldn't figure out something that would solve my problem...
Thanks.
/=/=/=/=
Deus
/=/=/=/=
|
|
|
|
|
The most important aspect of using COM with MFC is to initialize and uninitialize COM correctly.
Instead of using a global object, I suggest that you put ::CoInitialize(NULL) in the start of your CWinApp-derived application's 'InitInstance' and ::CoUninitialize() o the end of the same application's 'ExitInstance' (Before return call). This way, the initialization and uninitialization are handled smoothly.
As for the actual problem, I have just about no idea of where it lies. I suggest using the above methodology to utilize COM server.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
I already tried that. It was a lot worse when I did that. The result was about a zillion "Access Violation" messages instead of just one. I think there was also a "Stack overflow" message somewhere among them...
Also, it may have been unclear earlier, but the program doesn't abort with an Access Violation MESSAGE BOX. I only see the message in the debug output window. If I try what you suggested, I also get an Access Violation message box...
/=/=/=/=
Deus
/=/=/=/=
|
|
|
|
|
Have you determined that the COM server is indeed initialized?
if(::CoInitialize()!=S_OK)
MessageBox(_T("COM INIT FAILED"),NULL,MB_ICONERROR);
??
|
|
|
|
|
Yes, I have. I get S_OK.
/=/=/=/=
Deus
/=/=/=/=
|
|
|
|
|
HI.
I am starting out on Winsock stuff. I have been lookin gat the articles. For using any Winsock type commands, I need the Platform SDK? Is there an way without the Platform SDK? I was looking at how to down load this, do I only need the CORE SDK?
Thanks.
|
|
|
|
|
For winsock stuff, you dont need anything other than what you get in VisualStudio.
|
|
|
|
|
Like johnny said - use what you get in VS.
Easiest and most preferred for beginners is to create a class derived from CAsyncSocket - and override SetParent function. I've tried other methods which are more in-depth, but still find this one the easiest and most straight-forward. Don't forget AfxSocketInit().
I did not write W32.Blaster quit asking.
|
|
|
|
|
I have the following code where I am readin the file. Each line ends by '~'. I was able to get the first line, but I could not get the 2,3... lines.Can't see where my error is
do
{ string line;
getline(f,line,'~');
if (f.eof()) break;
getline(f,dump);
cout << line << endl;
count++;
} while (true);
|
|
|
|
|
If the while loop is terminating (prematurely), the if (f.eof()) condition must be evaluating to TRUE. Can you confirm or deny?
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
hi im aswin,
i need help recording CSocket. i want to know the difference between csocket and CAsyncSocket and which is the best to use.
1) When i use CSocket if one application acts as a server and other as client if the client disconnect abruptly how do i know that.
2) How do i make sure client has received correct datat the server has sen.
3) how do i send file using CSocket which may be more then 1 MB.
4) how do i make sure that a port isnt used by any other application.
5) Consider i use create command with port 1102. but when i use getport method i see that it shows different port.
plz help me in this situation as this is my first day in a company after graduating this april.
Regards
Aswin.N.Paranji
India
|
|
|
|
|
1) I have never used CSocket, but I would suggest that CAsyncSocket provides what you need here and will be easier to use - just override the OnClose function, set the AsyncSelect flags, and you will be notified when the remote client disconnects.
2) You dont need to do anything. TCP/IP ensures that the data is correct.
3) Just send it, theres nothing special you need to do because its 1MB.
4) Try and open the port. If it fails look at the error code and see if it indicates the port is in use. If you want to know beforehand then you can try and connect to the port and expect a failure - a success means the port is open.
5) I cannot see a getport function within CSocket or CAsyncSocket - what are you using to obtain the information? If you create a socket on a port then, provided its not in use, thats the port that will be used.
|
|
|
|