|
I have implemented this by using the CSocketComm Class[^]. I am basically setting up one application as a server and the other as a client, and sending messages that I can then parse and act on. The two applications talk to each other using the loopback address(127.0.0.1) and a port I specified.
This of course will only work if you have written both applications.
Regards,
Dustin
|
|
|
|
|
In several of my programs I have been using the CSocketComm class[^] in order to send commands between applications, but what I'm not real clear on is how to transfer files. I'm assuming that I will use a CFile or similar on the client side to read the bytes and transfer to the server, which will re-assemble them into another CFile, but I'm lacking in the specifics such as how many bytes to send at a time etc. Does anyone know of a good tutorial that I can read for some help, or is it as simple as I have stated above.
Thanks as always for your help,
Dustin
|
|
|
|
|
Dustin Henry wrote: I'm assuming that I will use a CFile or similar on the client side to read the bytes and transfer to the server...
I think you'd want to use CFtpConnection .
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
I won't actually be connecting to an FTP server, just another computer running my server application implemented with the CSocketComm class. I'm doing this so that I can retrieve current data about the system the application will be hosted on. So in escence I need to send the file from application to application and then have the server side application save the file to disk.
Thanks,
Dustin
|
|
|
|
|
Dustin Henry wrote: I won't actually be connecting to an FTP server...
Understood. Sorry 'bout that.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
It sounds like you have it.
Send any size chunks you want. Keep in mind the default socket internal buffer size is 8K so
for best performance keep those flushed (recv data as fast as you can ).
A chunk/packet size right around 500 bytes will insure each chunk fits in one TCP packet but the
protocol handles larger chunks. Without increasing the socket buffer sizes, 500 - 8K byte packets
will work well.
|
|
|
|
|
Great! Thanks as always for the advice Mark!
|
|
|
|
|
If you want to achieve high transfer rates you should consider setting you buffer sizes to at least 32K (e.g. read 32K chunks from a file and use a socket send buffer of 32K). Otherwise bulk data transfer will be very likely slower than 100 kB/sec.
Tip: Set the server socket send buffer to the wanted size (SO_SNDBUF and possible also SO_REUSEADDR ) after you created it, sockets created from the listening socket will then inherit this settings.
For further reading see Jon Snader's Effective TCP/IP Programming.
/M
|
|
|
|
|
Fly Like An Eagle With MIGHTY POWER.
|
|
|
|
|
Use CWnd::InvalidateRect .
|
|
|
|
|
Or just CWnd::Invalidate() .
/ravi
|
|
|
|
|
Ravi Bhavnani wrote: just CWnd::Invalidate().
Both function have similar effect, i.e. both function internally calls win32 funtion InvalidateRect , in case of
CWnd::Invalidate , it is
void CWnd::Invalidate(BOOL bErase)
{ ::InvalidateRect(m_hWnd, NULL, bErase);
}
In case of CWnd::InvalidateRect it is defined as
void CWnd::InvalidateRect(LPCRECT lpRect, BOOL bErase)
{ ::InvalidateRect(m_hWnd, lpRect, bErase);
|
|
|
|
|
prasad_som wrote: Both function have similar effect
That was exactly my point.
/ravi
|
|
|
|
|
Hi everyone i have a small problem.
In my app i need to save some txt, so i'm using this code:CFileDialog fileDlg (FALSE, "txt",strFilename ,OFN_OVERWRITEPROMPT| OFN_HIDEREADONLY, szFilters, this);
where for example m_strFilename="ADMA_log[01.01.2007]", and szFilters[]= "Text Files (*.txt)|*.txt|All Files (*.*)|*.*||";
Now i call DoModal() but i get nothing, my fileDlg m_hWnd = NULL.
I'f i change strFilename to "NULL" i get the windov but without initial filename that appears in the filename edit box!?
Help, please.
p.s.sorry for my poor english.
|
|
|
|
|
What is the value of _WIN32_WINNT ? If it's 0x0500 or greater, you'll need to use GetSaveFileName() instead.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
I tryed doing so
<br />
char szFilters[]= "Text Files (*.txt)|*.txt|All Files (*.*)|*.*||";<br />
<br />
CString m_SavePath = _T("");<br />
char IniDir[256];<br />
char szFile[256];<br />
char buff[256];<br />
strcpy(IniDir, fs2.GetFolder());
strcpy(buff,"");<br />
strcpy(szFile,buff);<br />
<br />
OPENFILENAME lpofn;<br />
lpofn.lStructSize = sizeof(OPENFILENAME);<br />
lpofn.hwndOwner = m_hWnd;<br />
lpofn.lpstrFile = szFile;<br />
lpofn.nMaxFile = sizeof(szFile);<br />
lpofn.lpstrFilter = szFilters;<br />
lpofn.nFilterIndex = 1;<br />
lpofn.lpstrDefExt = "txt";<br />
lpofn.lpstrCustomFilter = NULL;<br />
lpofn.lpstrFileTitle = NULL<br />
lpofn.nMaxFile = 0;<br />
lpofn.lpstrInitialDir = IniDir;<br />
lpofn.Flags = OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;<br />
lpofn.lpstrTitle = "Save";<br />
<br />
if(GetSaveFileName(&lpofn))<br />
{<br />
pMainFrm->Refresh();<br />
strcpy(IniDir, szFile);<br />
IniDir[lpofn.nFileOffset]=0;<br />
m_SavePath=szFile;<br />
<br />
CFile cFile(m_SavePath, CFile::modeCreate|CFile::modeWrite);<br />
EDITSTREAM es;<br />
<br />
es.dwCookie = (DWORD) &cFile;<br />
es.pfnCallback = (EDITSTREAMCALLBACK) MyStreamOutCallback;<br />
<br />
m_Output.StreamOut(SF_TEXT,es);
}<br />
and still not working!
Did I get all lpofn parametar's right, or what?
Big thanks!!!!
|
|
|
|
|
josip cagalj wrote: lpofn.nMaxFile = 0;
Why is this set to 0?
josip cagalj wrote: and still not working!
Which means what?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
The parametar lpofn.nMaxFile was initionali set to lpofn.nMaxFile = sizeof(szFile);. i make a mistake copying code and i dont know how did i deleted it.
With "and still not working!" i ment thad openfile dlg still dont shows it self!
The 'GetSafeFileName(&lpofn)' does not open dialog!
|
|
|
|
|
|
|
Did you check _WIN32_WINNT and also your code working on the vs2005
|
|
|
|
|
http://www.codeproject.com/dialog/searchfolders.asp[^]
When it comes to the bit where you add member variables of this new static text type, how do you get that to appear in class wizard, so that you select the static control, click member variable, set that to control and then your option is to set it "CStatic". Is there something I'm supposed to do to make CStaticFileSPec appear, or do you just set it to CStatic and the "subclassing" lines in OnInitDialog take care of that?
|
|
|
|
|
Hi,
sorry to follow this up, but can someone point me in the right direction with this. The class here would really help me by displaying some long filenames in a dialog app I have, but am unsure whether the instruction to add a member variable means something via the class wizard, or if I can just manually insert this into the class via the code (and making sure I have everything in the right place)
|
|
|
|
|
OK, I just added it into the dialog class directly and it worked fine. Sorry for being a muppet.
|
|
|
|
|
How to get a text on the label control ? I have used the label control of the XGraph, It display a blank label. I need some text should be inserted and then properties are applied further.
thanx in advance
rams
|
|
|
|