|
In fact, I want to execute an command to a some server :
www.somesite.com/index.php?command=12
and for that, would be proper to start IE browser in hidden mode ... perhaps I'm doing in worng way ??
|
|
|
|
|
Starting the browser is the wrong way. You can use the Wininet API to connect to the server.
There are some examples here at CP. I picked three from the search results:
CHttpClient - A Helper Class Using WinInet [^]
Simple HTTP Client using WININET [^]
AmHttpUtilities [^]
|
|
|
|
|
Yes, you are doing it the wrong way. You are just "firing and forgetting" when you use IE to do this, your program has no idea if it worked at all.
In addition to what Jochen said, the sequence of calls to the WinINet APIs that can simulate a POST operation is:
1) InternetOpen() to begin communication
2) InternetConnect() to connect to the web site
3) HttpOpenRequest() to do a POST to the script
4) HttpSendRequest() to send the data being "posted"
5) InternetReadFile() to receive any optional output the script produces (status)
6) InternetCloseHandle() to close the various handles opened by the previous steps.
You can look all these up on MSDN. Get this to work and you've learned a lot of useful stuff.
|
|
|
|
|
I want to execute this address :
// http://www.somesite.com/index.php?page=projects&sub=der_download_port
Here is my trial:
CString CTestWinInetDoc::SendRequest()
{
HINTERNET hSession = InternetOpen(_T("TestWinInet"),
INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0L);
if(hSession == NULL)return _T("Internet session handle invalid");
HINTERNET hConnect = InternetConnect(hSession,
_T("http://www.somesite.com"),
INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,
INTERNET_SERVICE_HTTP,0,0);
if(hConnect == NULL)
{
InternetCloseHandle(hSession);
return _T("Internet connect handle invalid");
}
HINTERNET hRequest = HttpOpenRequest(hConnect, NULL,
_T("index.php?page=projects&sub=der_download_port"), NULL, NULL, 0, INTERNET_FLAG_RELOAD, 0);
if(hRequest == NULL)
{
InternetCloseHandle(hSession);
InternetCloseHandle(hConnect);
return _T("Internet request handle invalid");
}
BOOL bSent = HttpSendRequest(hRequest, NULL, 0,
NULL, 0);
if(! bSent)
{
InternetCloseHandle(hSession);
InternetCloseHandle(hConnect);
InternetCloseHandle(hRequest);
return _T("Can not sent requested data");
}
InternetCloseHandle(hSession);
InternetCloseHandle(hConnect);
InternetCloseHandle(hRequest);
return _T("Success !");
}
but this code seems to do nothing ... what is wrong here ?
|
|
|
|
|
Well, I don't do it that way. There are a number of curious things in your code.
First, you do an InternetSendRequest() with null pointers and 0 lengths. While that may be syntactically OK, I have no idea what you think that does nor why you are doing it.
2nd, you don't user InternerReadFile() to get the results of your attempts so if there were any error messages, you've discarded them. If you want to know what's wrong, those messages might have helped.
Third, your URL with parameters looks like a "Get" request (the default "verb" for HttpOpenRequest() is "GET") and I use this form mostly for "POST" requests. For "GET", I would use "InternetOpenURL()"
The sequence there would be
InternetOpen()
InternetOpenURL()
HttpQueryInfo()
InternetReadFile()
Don't throw away the output this time.
PS, did you check to see if the server received the request? Just how do you know it did nothing?
|
|
|
|
|
Hi Guys,
Is it possible to set TCP/IP timeout value per socket instance(connection)?
~ Vikram S
|
|
|
|
|
The actual socket timeout value is based on a configuration in the operating system. So the simple answer is no, there's really no convenient way to change timeout between socket instances.
|
|
|
|
|
Just went through this link. Correct me if my interpretation is wrong.
http://msdn.microsoft.com/en-us/library/windows/desktop/ee470551%28v=vs.85%29.aspx
|
|
|
|
|
My answer was based on the assumption you meant the connection timeout (the act of establishing a connection to another socket). If that's not what you meant, it doesn't apply.
|
|
|
|
|
okay. So If I have socket connection which is already established. Will I able to set a timeout so that TCP/IP implementation provided by OS, will automatically close it?
The reason for asking this question is I want to maintain a connection pool and want to make sure that if no one uses socket connections from it, it should get atomically freed.
~ Vikram S
|
|
|
|
|
Hi,
I have a replace function which replaces all the occurences of the string into another file. But when I use the replace function multiple times... it replaces the string which was passed in the last call only and all the previous replacement does not happen.
Below is the code
replace(char text2find[80],char text2repl[80])
{
char fileOrig[32] = "OrigFile.txt";
char fileRepl[32] = "ReplacedFile.txt";
char buffer[MAX_LEN_SINGLE_LINE+2];
char *buff_ptr, *find_ptr, *tok;
FILE *fp1, *fp2;
size_t find_len = strlen(text2find);
fp1 = fopen(fileOrig,"r");
fp2 = fopen(fileRepl,"w+");
while(fgets(buffer,MAX_LEN_SINGLE_LINE+2,fp1))
{
buff_ptr = buffer;
tok = strtok(buff_ptr,"*");
if(tok != NULL)
{
while ((find_ptr = strstr(buff_ptr,text2find)))
{
while(buff_ptr < find_ptr)
fputc((int)*buff_ptr++,fp2);
fputs(text2repl,fp2);
buff_ptr += find_len;
}
fputs(buff_ptr,fp2);
}
}
rewind(fp1);
rewind(fp2);
fclose(fp2);
fclose(fp1);
}
I wud actually wanto replace all the string in the same file, but am finding it tough and also reuse of the replace function multiple times wud be difficult. Hence went with two files...
Thanks,
Faez
|
|
|
|
|
Your file names are constant strings, defined inside your function. That is not the way to do it.
I see basically two ways that could work for you:
1.
perform all replace operations in memory, not in files. That way you can load a text file, modify the text as much as you want, then store the final text in the same or in another file.
2.
make the source and destination file names input parameters to your function, and use a new destination file name each time you call replace().
PS: why are you rewinding the files before closing them?
Luc Pattyn [My Articles] Nil Volentibus Arduum
Fed up by FireFox memory leaks I switched to Opera and now CP doesn't perform its paste magic, so links will not be offered. Sorry.
|
|
|
|
|
Faez Shingeri wrote: rewind(fp1);
rewind(fp2); These are unnecessary.
"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
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
I thought rewind will help me during the reuse of the file..
The replace function doesnot check for the entire string
I mean.. it replaces all the strings like &tabhostvars and &tabhostvars01 (I do not want this string to be replaced..) I only want &tabhostvars strings to be replaced
Can I do this..?? #vaguequestionButlearning
while ((find_ptr = strstr(buff_ptr,text2find)) && find_ptr+find_len+1 == NULL)
Thanks,
Faez
|
|
|
|
|
Faez Shingeri wrote: I thought rewind will help me during the reuse of the file..
But you are not reusing the file. It is being closed. When replace() is called again, a whole new file pointer is generated. The fact that it is the same filename is irelevant.
Faez Shingeri wrote:
while ((find_ptr = strstr(buff_ptr,text2find)) && find_ptr+find_len+1 == NULL) This is an accident waiting to happen.
Provide a sample of your input file, what string(s) you want replaced, and what string(s) you do not want replaced.
"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
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
Sample File to be parsed and replace different strings..
*************************************************************************
* API TEMPLATE PROGRAM *
* THIS PROGRAM SERVES AS A TEMPLATE TO GENERATE THE ACTUAL API PROGRAM *
* *
* MAPPING RULES: *
* -------------------------------------------------------------------- *
* Variable Name Replace with *
* -------------------------------------------------------------------- *
* &apiname API Name from Mapping Repository *
* &dclgen DCLGEN name from Mapping Repository *
* &keyinfo Key field column name from file layout *
* &hostvarprimary Key field host var name from DCLGEN *
* &tablecols Table column name from DCLGEN *
* &tablehostvars Host variable names from DCLGEN *
* &tblprimary Key field column name from DCLGEN *
* &tablehostvars01 01 level of host var from DCLGEN *
*************************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. &apiname.
EXEC SQL
INCLUDE &dclgen
END-EXEC.
EXEC SQL
INCLUDE SQLCA
END-EXEC.
2100-SELECT-PARA.
MOVE &keyinfo TO &hostvarprimary
EXEC SQL
SELECT &tablecols
INTO
&tablehostvars
FROM &tblname
WHERE
&tblprimary = &hostvarprimary
END-EXEC
IF SQL-CODE EQUAL ZERO
SET FUNC-SUCCESS TO TRUE
MOVE &tablehostvars01 TO VSAM-REC-BLOCK
ELSE
PERFORM 9999-ABEND-PARA
END-IF.
2100-SELECT-PARA-EXIT. EXIT.
2200-INSERT-PARA.
MOVE VSAM-REC-BLOCK TO &tablehostvars01
EXEC SQL
INSERT INTO &tblname
(
&tablecols
)
VALUES
(
&tablehostvars
)
END-EXEC
IF SQL-CODE EQUAL ZERO
SET FUNC-SUCCESS TO TRUE
ELSE
PERFORM 9999-ABEND-PARA
END-IF.
2200-INSERT-PARA-EXIT. EXIT.
2300-UPDATE-PARA.
MOVE VSAM-REC-BLOCK TO &tablehostvars01
EXEC SQL
UPDATE &tblname
SET &tablecols = :&tablehostvars
WHERE
&tblprimary = &tablehostvarsprimary
END-EXEC
IF SQL-CODE EQUAL ZERO
SET FUNC-SUCCESS TO TRUE
ELSE
PERFORM 9999-ABEND-PARA
END-IF.
EXIT PROGRAM.
I shall paste below my exact replace function too
replace(char text2find[80],char text2repl[80],char fileOrig[32], char fileRepl[32] )
{
char buffer[MAX_LEN_SINGLE_LINE+2];
char *buff_ptr, *find_ptr, *tok;
FILE *fp1, *fp2;
size_t find_len = strlen(text2find);
fp1 = fopen(fileOrig,"r+");
fp2 = fopen(fileRepl,"w+");
rewind(fp1);
rewind(fp2);
while(fgets(buffer,MAX_LEN_SINGLE_LINE+2,fp1))
{
buff_ptr = buffer;
tok = strtok(buff_ptr,"*");
if(tok != NULL)
{
while ((find_ptr = strstr(buff_ptr,text2find)))
{
while(buff_ptr < find_ptr)
fputc((int)*buff_ptr++,fp2);
fputs(text2repl,fp2);
buff_ptr += find_len;
}
fputs(buff_ptr,fp2);
}
}
fclose(fp2);
fclose(fp1);
}
Thanks,
Faez
|
|
|
|
|
Can you search for "tablehostvars " (note the space) instead of "tablehostvars"?
"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
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
hai friends please helpme to complete my project...
i have only 25 hours time to complete that above project if any body have that source code please send to this mail id b.manmadkumarreddy@gmail,
manmadb32@gmail.comimmediately please help me.......
|
|
|
|
|
Nobody here is going to do your work for you.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
manmadkumarreddy wrote: i have only 25 hours time to complete that above project
Don't you think you left it a bit late?
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
manmadkumarreddy wrote: have only 25 hours time to complete that above project
Who on earth have 25 hours for you?
|
|
|
|
|
manmadkumarreddy wrote: 25 hours time to complete
manmadkumarreddy wrote: source code please send
As soon as I receive payment, I will get started on that for you.
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Individuality is fine, as long as we do it together - F. Burns
|
|
|
|
|
Hi,
If you know please tell me where i can find gSpan source code, it used in Data Mining to find out supgraph.
Thanks!
|
|
|
|
|
Google[^] is always the first place to look.
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
I have search gSpan by google, but the code i find which need the environment with matlab. But i don't have matlab. What i want is a source code implemented only on C or C++ which i can run it by Microsoft Visual Studio and Dev-C++.
Thanks for your reply
|
|
|
|