| | |
Data loss in Type Conversion.
Please support our C++ advertiser: Intel Parallel Studio Home
![]() |
•
•
Join Date: Sep 2004
Posts: 22
Reputation:
Solved Threads: 0
Hello Everyone,
I'm working on a couple of programs, client/server. I'm using winsock library to handle data transfer between the two programs. I'm having a problem when it comes to sending int values, they must be converted to (char *) since that's the data type of the buffers used in the socket Send() and Recv() functions. to elaborate, consider the following:
Client side:
-----------
unsigned char rnd[4];
int noncer =0;
// Generating a random number
RAND_pseudo_bytes(rnd,sizeof(rnd));
noncer = (int)rnd;
non1=(char*)noncer;
// These two lines produce the same output which is 1244556
cout <<"\n Noncer :" << noncer << "\n";
cout.flush();
cout <<"\n Noncer char :" << (int)non1 << "\n";
cout.flush();
SendData(Socket, non1);
Server Side:
-----------
int client_nonce;
char String[50];
String_initialization(String);
// Reading the nonce identifier
RecieveMessage(socket, String, number_of_bytes);
client_nonce = (int)String;
// this results in 1244588 !!
cout<<"\n the nonce is:"<<client_nonce <<endl;
cout.flush();
If anyone can tell me what's causing the change of data i'd really appreciate it.
Thank you all in advance.
Layla.
I'm working on a couple of programs, client/server. I'm using winsock library to handle data transfer between the two programs. I'm having a problem when it comes to sending int values, they must be converted to (char *) since that's the data type of the buffers used in the socket Send() and Recv() functions. to elaborate, consider the following:
Client side:
-----------
unsigned char rnd[4];
int noncer =0;
// Generating a random number
RAND_pseudo_bytes(rnd,sizeof(rnd));
noncer = (int)rnd;
non1=(char*)noncer;
// These two lines produce the same output which is 1244556
cout <<"\n Noncer :" << noncer << "\n";
cout.flush();
cout <<"\n Noncer char :" << (int)non1 << "\n";
cout.flush();
SendData(Socket, non1);
Server Side:
-----------
int client_nonce;
char String[50];
String_initialization(String);
// Reading the nonce identifier
RecieveMessage(socket, String, number_of_bytes);
client_nonce = (int)String;
// this results in 1244588 !!
cout<<"\n the nonce is:"<<client_nonce <<endl;
cout.flush();
If anyone can tell me what's causing the change of data i'd really appreciate it.
Thank you all in advance.
Layla.
Don't play around with casting like that unless you know what you're doing. Type punning can be tricky business, but barring transmission issues with your sockets, this should work:
C++ Syntax (Toggle Plain Text)
#include <cstring> #include <iostream> using namespace std; int main() { int i1 = 12345; char buffer[sizeof ( int )]; memcpy ( buffer, (unsigned char *)&i1, sizeof ( int ) ); // Simulate send/recv int *pi = (int *)buffer; cout<< *pi <<endl; }
![]() |
Similar Threads
- News Story: BNP data loss (Existing Scripts)
- error: expected constructor, destructor, or type conversion before '<' to (C++)
- News Story: Worse government data loss ever caused by a bit of a muddle say police (Network Security)
- A doubt in Type Conversion Program (C++)
- type conversion (C)
Other Threads in the C++ Forum
- Previous Thread: <string>
- Next Thread: Validation Program
| Thread Tools | Search this Thread |
api array based beginner binary bitmap c++ c/c++ calculator char char* class code coding compile compiler console conversion count database delete deploy desktop developer dll download dynamic dynamiccharacterarray email encryption error file forms fstream function functions game givemetehcodez google graph gui homeworkhelp homeworkhelper iamthwee ifstream input int integer java lib linkedlist linker list loop looping loops map math memory multiple news node number numbertoword output parameter pointer problem program programming project python random read recursion recursive reference rpg sorting string strings struct temperature template test text text-file tree unix url variable vector video visualstudio win32 windows winsock word wordfrequency wxwidgets





