|
Hi
I want to connect a number of sockets (2 or 3) on a port seems like the underlying Object of CAsynSocket is m_hSocket. That would lead me to believe that on the Client Side for Every
Client m_hSocket I would have to instantiate a CAsnycSocket class via new (on the heap) and do a Create and later connect ? It seems after the Create m_hSocket would have a value am I correct on this ?
Thanks
|
|
|
|
|
It's not completely clear what you're asking, but I can say that m_hSocket is the underlying SOCKET handle that the CAsyncSocket object encapsulates.
You are able to create a new CAsyncSocket object and then attach an existing SOCKET handle by using the Attach() method.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Yes that's what I was looking for so if I want to use 2 Different sockets I have to have two instances of CAsynSocket
In Addition If a wrapping CasynSockets in CWinThread Class when getting the OnConnect Notifcation Its is in The Context of the Main Thread so I would have to take that (Main Threads) m_hScoket and Attach to the one used by my CwinThread ? correct As I believe all CasynSocket notification are in the Context of the Main Thread
Thanks
|
|
|
|
|
|
#include<stdio.h>
#include<conio.h>
int main()
{
double width,hight,area;
printf("enter the value of width");
scanf("%f",&width);
printf("enter the vlaue of hight");
scanf("%f",&hight);
area=width*hight;
printf("area=%f",area);
return 0;
}
Why area=0.000 showing
|
|
|
|
|
I guess either width is zero or hight is zero or both are zero. 
|
|
|
|
|
The format specifier you used in scanf is wrong: Change from
Quote: scanf("%f",&width); to
scanf("%lf",&width);
See scanf - C++ Reference[^]
Of course you need to make modify the other scanf call as well.
|
|
|
|
|
In constructor of my class WorkPackage , I am allocating a stack to each instance of workpackage and adding it to a queue. When a workpackage gets executed, the allocated stack get released in class destructor. The problem is that my destructor gets called before the execution of workpackage and program crashes with segmentation fault. I looked it up and thought that it is because of when i get the package from the queue:
PackageQueue.cpp
WorkPackage PackageQueue::GetWorkPackage(){
if (isEmpty())
{
return WorkPackage();
}
pthread_mutex_lock(&getlock);
WorkPackage data=WorkPackageQueue[front];
if (front == rear)
{
rear = -1;
front = -1;
}
else if (front == 0)
front = size-1;
else
front--;
pthread_mutex_unlock(&getlock);
return WorkPackage(data);
}
I created a copy contructor to allocate a new stack to the instance in case of deletion after GetWorkPackage function
WorkPackage::WorkPackage(const WorkPackage& rhs){
Wp_localstack.local_stack= Stack::make_stack();
m_action=rhs.m_action;
m_arguments=rhs.m_arguments;
}
But the problem is still there..Need hints to how can i do this correctly. I will provide more code if needed
modified 21-Sep-18 12:07pm.
|
|
|
|
|
What is rear?
What is front?
What is size?
What is data?
how is WorkPackage ctor defined?
|
|
|
|
|
rear and front are the indices of a circular array and size is queue length. data is the instance of the WorkPackage that is being retrieved and returned back for execution.
WorkPackage ctor
WorkPackage::WorkPackage(void (*action)(void*), void* arguments) {
Wp_localstack.local_stack= Stack::make_stack();
m_action = action;
m_arguments = arguments;
m_context = make_fcontext(Wp_localstack.local_stack, 1000, m_action);
WorkPackage dtor
WorkPackage::~WorkPackage(){
Stack::release(Wp_localstack.local_stack);
}
|
|
|
|
|
Then your code is doing something wrong, or in the wrong order. Your destructor needs a method of checking whether the stack has been correctly allocated before trying to release it.
|
|
|
|
|
Will need to look at the destructor code.
Since you're returning temporary objects, you could try changing the function signature to WorkPackage&& PackageQueue::GetWorkPackage
«_Superman_»
I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++) (October 2009 - September 2013) Polymorphism in C
|
|
|
|
|
Destructor is as follows.
WorkPackage::~WorkPackage(){
if (Wp_localstack.local_stack != nullptr)
{
Stack::release(Wp_localstack.local_stack);
}
}
and release() is follows.
void Stack::release(void * stack ){
int core_id= coreNumber::getInstance()->getCoreID();
WPManagerProviderSingleton& singletonObj =
WPManagerProviderSingleton::getInstance();
WorkPackageManager &wpm = singletonObj.getWpmInstance(core_id);
wpm.PerThreadMemPool.DeAllocate(stack);
}
|
|
|
|
|
|
yaseen ramzan wrote:
is it a correct about destructors Yes.
"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
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Hey guys. I don't know much about coding, but I'd like to be a software developer. Lofty goal for sure considering my lack of knowledge. I'm prepared to work at this however. I need to know where to start.
I'll look at reviews for a given book. Some say it's great, some say it's terrible. Some folks say an IDE is fine, while others say that it on obfuscates aspects of programming that the coder should absolutely be familiar with. I haven't a clue!
I like the idea of learning without an IDE holding my hand. Can someone recommend a book that teaches C using a text editor such as Gedit for example? Or any book that would be a good starting point. Thank you in advance.
|
|
|
|
|
|
Thank you very much. I see this book recommended a lot, but the publication date is in 1988. The guy assumes I'm using UNIX. How do I translate that to today? What would I program on?
|
|
|
|
|
Quickbeam1213 wrote: The guy assumes I'm using UNIX C was originally developed on Unix which is why it has so many references to it. But it all works just the same on Windows; and as I gave you the link for the online compiler it does not matter what system you are on. Once you have developed a reasonable understanding you can install one of the free IDEs or compilers on your own system.
|
|
|
|
|
Sorry. I didn't see that link at first. Thank you.
|
|
|
|
|
If you are using Windows and you intend to write your learning code for Windows then you would start with Visual Studio from Microsoft 2017.
1.) It's free for solo developer, just register and download
2.) It's a modern IDE with good debugger and intellisense alone will help you with silly errors.
3.) Opening a console app template to do some of those easy startup lesson is a couple of mouse clicks.
4.) It's the O/S you are familiar with.
I seriously wouldn't consider anything else because it's just a whole pile of junk learning like make etc that you will never use for those other systems. You will also struggle with any unix/linux code as many of the API calls will not be represented under windows and you will need to incorporate posix library substitutes just to get your sample code to compile.
I use GCC, Keil, Green Hills and Eclipse for a lot of other work but they are all much more complex to run on Windows than Visual Studio and when you are starting out what you want is simplicity. You want to concentrate on the C language itself not the toolchain systems.
You will have compiled and run your first programs on VS before you have even worked out how to install and setup many of the other systems.
In vino veritas
modified 17-Sep-18 8:04am.
|
|
|
|
|
To start get a Linux box, the gcc compiler and a text editor (real programmers use vi ).
|
|
|
|
|
ROFL just no, I am assuming that was a joke
I still have an operational punch card reader if anyone still programs like that .. it could be yours for a reasonable cost.
modified 17-Sep-18 11:48am.
|
|
|
|
|
Well, I code every day using vim and gcc on a Linux box.
As you know very well, Windows programming is another topic.
|
|
|
|
|
Oh you were serious
Ok lets be realistic you may do it but even since 2016 there is actually even more programmers using mac's than linux, it's dropped down to number 3. This is not a war about O/S's it's just a user numbers and linux is falling, windows is also falling and mac is picking up the losses. If you go by actual O/S mac is probably now number one because windows O/S use is broken into 7 & 10 with roughly equal numbers and a few still on XP. There is probably 2018 numbers out, but I now that is roughly what it was in 2017.
Even on linux for a new user I would suggest Studio Code, Eclipse or something more updated because if they do go into the serious commercial world it is unlikely an company hiring would be running on vi.
The normal however is that you program on the machine you are most familiar with and use
In vino veritas
modified 17-Sep-18 12:24pm.
|
|
|
|