|
Home > Archive > Unix Programming > March 2005 > Recvfrom Gives Empty Buffer
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Recvfrom Gives Empty Buffer
|
|
| William 2005-03-23, 2:52 am |
| I have declared the following struct using C++:
struct PropagateInfo {
string type; // "registration", "gossip", "termination"
int initiatePeerID;
};
which I used as follows:
PropagateInfo* initiatePeerInfo = new PropagateInfo;
initiatePeerInfo->type = type; // type is set to "registration"
initiatePeerInfo->initiatePeerID = ID;
cout << "type before sending to overseer: " << initiatePeerInfo->type << \
endl; // prints "registration"
// sending the struct initatePeerInfo to the server
if ( (numBytes = sendto(sockfd, (void*)initiatePeerInfo, \
MAX_UDP_PACKET_SIZE, 0, (struct sockaddr *)&serv_addr, sizeof(struct \
sockaddr))) == -1 ) {
cerr << "send to: " << strerror(errno) << endl;
exit(1);
}
cout << "bytes sent: " << numBytes << endl; // prints 512
/**** server side *****/
numBytes = recvfrom( sockfd, initiatePeer, MAX_UDP_PACKET_SIZE, 0, (struct
sockaddr *) &peer_addr, &addrLen );
// I have also tried sizeof(struct PropagateInfo) instead of
MAX_UDP_PACKET_SIZE
cout << "num bytes received: " << numBytes << endl; // prints 512
initiatePeerID = ((PropagateInfo*)initiatePeer)->initiatePeerID;
cout << "initiatePeerID: " << initiatePeerID << endl; // prints the
correct ID
type = ((PropagateInfo*)initiatePeer)->type;
// error - nothing (i.e. "") is printed!!!
cout << "type after receiving: " << type << endl;
output:
type after receiving:
my question:
Why is ((PropagateInfo*)initiatePeer)->type "registration" before sendto;
but "" after recvfrom?!
Thanks for your help.
Documentation:
http://linux.com.hk/PenguinWeb/manp...=send§ion=2
| |
| Barry Margolin 2005-03-23, 2:52 am |
| In article
<Pine.GSO.4.58.0503222316040.650@cpu02.student.cs.uwaterloo.ca>,
William <wh2leung@student.cs.uwaterloo.ca> wrote:
> my question:
> Why is ((PropagateInfo*)initiatePeer)->type "registration" before sendto;
> but "" after recvfrom?!
I already answered you in another newsgroup. If you really *must* post
to multiple groups, crosspost properly.
--
Barry Margolin, barmar@alum.mit.edu
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***
|
|
|
|
|