|
I have a fairly complex application, to which I am adding socket communications for data logging. I have implemented an approach that uses a single winsock socket in a thread, and it's working ok. But it does not have the full functionality needed.
I designed the next implementation using CSocket and ran into a weird problem on actual coding. Even a simple declaration of a socket followed by a CSocket.Create(PORT, SOCK_STREAM) returns an error and fails. This is at initialization, where not much has yet happened.
It compiles fine under both VC++ 6SP5 and .net 2003. Doing this in a standalone application stump works ok, of course.
What could be going on here? I have been wasting more than half a day on this. Doing what I plan with winsock would take a lot more time.
Thanks for any hints,
-- Harald
|
|
|
|
|
HaraldS wrote:
CSocket.Create(PORT, SOCK_STREAM) returns an error and fails
could you please tell me the error it return
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
|
|
|
|
|
HaraldS wrote:
CSocket.Create(PORT, SOCK_STREAM) returns an error and fails
To have better description of errors use FormatMessage along with GetLastError.
Here[^] is the usage sample.
<bold>- Nilesh
<italics>"Reading made Don Quixote a gentleman. Believing what he read made him mad" -George Bernard Shaw
|
|
|
|
|
Are you creating the CSocket class on a thread NOT created using AfxBeginThread? I've heard that that might lead to problems.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
call AfxSocketInit() in the initinstance of your application...
Greetings,
Davy
|
|
|
|
|
AfxSocketInit() was it! Worked first time it was added. Not sure, why the online CSocket documentation did not make it clear that it was needed.
Re other responses: I am using AfxThread, and the error code was not listed, since I could not find any reference to it ANYWHERE. But given MS docs that might not mean anything.
Thanks all for the response.
-- Harald
|
|
|
|
|
hai..
Thanks for u r quick response. The main problem is when i extract the unicode data it comming in ??????? symbols. How to extract this unicode data.Please let me know.
Thanking you,
E.Veera Raghavendra.
e.veera raghavendra
|
|
|
|
|
Ok reading your previous post I understand you want to convert from Unicode to Ascii string.
Having "????" in your resulting string is probably because you converted to a codepage that does not support the characters in the unicode string.
Also make sure the font you use to display the converted text support the converted characters. That could also be the problem
Greetings,
Davy
|
|
|
|
|
Unicode data is appearing on the application(MSWORD). When i extract throught the program it is giving in ????? symbols. Even i have installed "static libary for unicode" and "shared library for unicode". Please let me know.
Best Regards
E.Veera Raghavendra.
e.veera raghavendra
|
|
|
|
|
You might still need to convert the string data within your program from UNICODE text data to ASCII text data using a function like WideCharToMultiByte
|
|
|
|
|
I have tried with WideCharToMultiByte, It is not working.
wchar_t *unicodeStr;
int j=::WideCharToMultiByte(CP_ACP,WC_SEPCHARS,(const unsigned short *)cstContent.GetBuffer(0),-1,(char *)unicodeStr,0,NULL,NULL);
CString strj;
strj.Format("%d",j);
AfxMessageBox(strj);
if(j)
{
ToIntercedingModule(cstContent.GetBuffer(0),PURGE_SPEECH,cstFont.GetBuffer(0),"MSWord<<edit>>", false);
}
I have written above code. It's returning 0.
Thanking you
E.Veera Raghavendra.
e.veera raghavendra
|
|
|
|
|
WideCharToMultiByte converts from UNICODE to MultiByte.
I think you got the parameters all jumbled up in the sample function call you posted.
Let us assume you have a buffer of text in UNICODE that you want to convert to MultiByte
char msMultiByteStringBuffer[1024];
WideCharToMultiByte(CP_THREAD_ACP, 0, wsUnicodeString, -1, msMultiByteStringBuffer,
sizeof(msMultiByteStringBuffer), NULL, NULL);
You can dynamically allocate the multibyte buffer if necessary, by obtaining the number of characters required by making a blank call:
int iNumCharsRequired = WideCharToMultiByte(CP_THREAD_ACP, 0, wsUnicodeString, -1, msMultiByteStringBuffer, 0, NULL, NULL);
|
|
|
|
|
The above code is also not working. I am greatful to u r response.My unicode data is available in CString variable. So, i copied that data into *char variable. In WideCharToMultiByte(..) function when i gave the *char variable it is responding with the following error
WideCharToMultiByte' : cannot convert parameter 3 from 'char *' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
so i have changed that (unsigned short *) variable.Is there any problem with this code. Please let me know.
Thanking you,
E.Veera Raghavendra.
e.veera raghavendra
|
|
|
|
|
The CString buffer containing the UNICODE text must go where the UNICODE is required, and you need a separate buffer for the converted text. When a function wants to see LPBYTE or UINT* and you knwo it is supposed to be a charcater buffer, you can always put (LPBYTE) in front of the variable or put (UINT*)
For example, if I have char szBuffer[1024];
and some function expects an 'unsigned short *', you could do this:
(unsigned short *)szBuffer
From your explanation, I am concerned that you continue to place your UNICODE text where the MultiByte buffer should go and vice versa.
|
|
|
|
|
I did same type of covertion before, even it was displaying the characters as ?????. And I have tried another way also. I have read one by one character from the buffer and changed to hexadecimal and deciaml values. All the character values aresame(hexadecimal--3f, Decimal--63). What i am thinking is VC++ is not able to extract that data.I have tried with IsUnicodeText(...) function. That's also failured.
Thankign you,
E.Veera Raghavendra.
|
|
|
|
|
I need to sync the horizontal scrolling of two CListCtrl's. However, I don't want a scroll-bar to show up in one of the CListCtrl's. I've been trying to get it to work for several hours and I'm running out of ideas.
Any ideas out there? Remember, I can't have the scroll-bar showing up in one of the CListCtrl's.
Thanks!
-Ian
|
|
|
|
|
;P:->Dear all,
I've tested the method of the ISampleGrabber filter in Directshow,and also I accomplished Extracting bitmaps from a virtual camera.Now I just wonder whether the ISampleGrabber filter can be used in mobile devices? eg:Smartphone?
Thanks a lot and looking forward to your reply~
siwlyfe
|
|
|
|
|
Hai..
I have problem with unicode data. Please let me know any body having idea about converting unicode to Ascii.
Thanking you..
E.Veera Raghavendra.
e.veera raghavendra
|
|
|
|
|
Yes,I want it too.Pls list out the methods of Unicode data type convertion if any body knows.Thanks a lot and best wishes
siwlyfe
|
|
|
|
|
|
Win32:
WideCharToMultiByte => Unicode to ANSI
MultiByteToWideChar => ANSI to Unicode
If you're using MFC 7.1:
CStringW strUnicode = L"Blah";
CStringA strANSI(strUnicode);
CStringW = Unicode string
CStringA = ANSI string
Pssst. You see that little light on your monitor? That's actually a government installed spy camera. Smile and wave to big brother!
|
|
|
|
|
|
hai..
Thanks for u r quick response. The main problem is when i extract the unicode data it comming in ??????? symbols. How to extract this unicode data.Please let me know.
Thanking you,
E.Veera Raghavendra.
e.veera raghavendra
|
|
|
|
|
I Want to ignore ASSERT Dialog on DEBUG mode using try ~ catch.
How can i do it?
help me pelase...
And sorry for my little English.
thanks..
|
|
|
|
|
You can't, they are different beasts. You can redefine the ASSERT macro, I suppose.
Christian Graus - Microsoft MVP - C++
|
|
|
|