I get until
TcpClientObject.SendToSocket((char*)&DataObject, sizeof(DataObject));
but then the data sent is like a memory address of 7 numbers.
I think its maybe sizeof(DataObject), because DataObject is a class and its size
is not the same as the size of a, b, c?
Thanks!
Code:#include <windows.h> #include <iostream> #pragma comment(lib,"ws2_32.lib") #pragma comment(lib,"user32.lib") using namespace std; class Data { public: int a; int b; int c; protected: private: }; class TcpClient { public: void InitWinsock() { Result = WSAStartup(MAKEWORD(2, 2), &WSAdata); if(Result != 0) {printf("%s\n","Setting Up Winsock Client Failed!"); WSACleanup();} else printf("%s\n","Setting Up Winsock Client Success!"); } void SetAddressInfo() { memset(&sins, 0, sizeof(sins)); ConnectSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); sins.sin_family = AF_INET; sins.sin_port = htons(80); sins.sin_addr.s_addr = inet_addr("127.0.0.1"); } void ConnectInfo() { if(connect(ConnectSock, (sockaddr*)&sins, sizeof(sins))== SOCKET_ERROR) {printf("%s\n","Failed To Connect!"); WSACleanup();} else printf("%s\n","Connected To Server!"); } void SendToSocket(char* Data, int size) { while(1) { // printf("%s\n","Enter Something To Send!"); // cin >> Something; Result = send(ConnectSock,Data,size,0); if(Result == -1) {printf("%s\n","Failed To Send Data!"); WSACleanup(); break;} else{printf("Data Sent! %i\n", Data); Sleep(3000);} } } protected: private: WSADATA WSAdata; SOCKET ConnectSock; sockaddr_in sins; int Result; char Something[64]; }; /**********************************************************************************/ /******************************THE SERVER****************************************/ class TcpServer { public: void InitWinsock() { Result = WSAStartup(MAKEWORD(2, 2), &WSAdata); if(Result == -1) {printf("%s\n","Setting Up Winsock Server Failed!"); WSACleanup();} else {printf("%s\n","Setting Up Winsock Server Success!");} } void SetAddressInfo() { memset(&sins, 0, sizeof(sins)); ListenSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); sins.sin_family = AF_INET; sins.sin_port = htons(80); sins.sin_addr.s_addr = inet_addr("127.0.0.1"); } void BindnListen() { if( bind( ListenSock, (struct sockaddr*)&sins, sizeof( struct sockaddr)) == SOCKET_ERROR ){ printf("%s\n","Failed To Bind To Address!");WSACleanup();} else printf("%s\n","Binded To Address Success!"); if(listen(ListenSock, 1)==SOCKET_ERROR){ printf("%s\n","Failed To Listen On Address!"); WSACleanup();} else printf("%s\n","Listening On Address!"); } void WaitForConnections() { while(1) { printf("%s\n","Waiting For Connections!"); int clnt = sizeof(sins); AcceptSock = accept(ListenSock ,(struct sockaddr*)&sins, &clnt); if(AcceptSock == INVALID_SOCKET) { printf("%s\n","No Connection Made Yet!"); } else { printf("%s\n","Connection Made!"); break; } } } void RecieveFromSocket() { while(1) { if(AcceptSock != INVALID_SOCKET) { recv(AcceptSock,(char*)&DataObject,sizeof(DataObject),0); printf("%d\n",DataObject.a); printf("%d\n",DataObject.b); printf("%d\n",DataObject.c); } else { printf("%s\n","No Connection Yet!"); } } } protected: private: WSADATA WSAdata; SOCKET ListenSock; SOCKET AcceptSock; sockaddr_in sins; int Result; char RecvBuffer[512]; Data DataObject; }; /**********************************THE SERVER END********************************/ int main(int argc, char* argv[]) { Data DataObject; DataObject.a = 50; DataObject.b = 100; DataObject.c = 200; TcpClient TcpClientObject; TcpClientObject.InitWinsock(); TcpClientObject.SetAddressInfo(); TcpServer TcpServerObject; TcpServerObject.InitWinsock(); TcpServerObject.SetAddressInfo(); TcpServerObject.BindnListen(); TcpClientObject.ConnectInfo(); TcpServerObject.WaitForConnections(); TcpClientObject.SendToSocket((char*)&DataObject, sizeof(DataObject)); TcpServerObject.RecieveFromSocket(); WSACleanup(); return 0; }



LinkBack URL
About LinkBacks


