i am not seeing a = 50; b = 100; c = 200; in the recv buffer, i am only seeing a = 50;
what is the problem?
Code:// tcp.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <vector> #include <windows.h> #include <iostream> #include <list> #include <stdio.h> #include <d3dx9.h> #pragma comment(lib,"ws2_32.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 == -1) { printf("%s\n","Setting Up Winsock Failed!"); } else { printf("%s\n","Setting Up Winsock 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(50); sins.sin_addr.s_addr = inet_addr("192.168.1.100"); } void ConnectInfo() { if(connect(ConnectSock, (sockaddr *)&sins, sizeof(SOCKADDR_IN))== SOCKET_ERROR) { printf("%s\n","Failed To Connect!"); } else { printf("%s\n","Connected To Server!"); } } void SendToSocket(char*Data) { while(1) { // printf("%s\n","Enter Something To Send!"); // cin >> Something; Result = send(ConnectSock,Data,sizeof(Data),0); if(Result == -1) { printf("%s\n","Failed To Send Data!"); break; } else { printf("%s\n","Data Sent!"); } } } protected: private: WSADATA WSAdata; SOCKET ConnectSock; sockaddr_in sins; int Result; char Something[64]; }; class TcpServer { public: void InitWinsock() { Result = WSAStartup(MAKEWORD(2, 2), &WSAdata); if(Result == -1) { printf("%s\n","Setting Up Winsock Failed!"); } else { printf("%s\n","Setting Up Winsock 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(50); sins.sin_addr.s_addr = inet_addr("192.168.1.100"); } void BindnListen() { if( bind( ListenSock, (struct sockaddr*)&sins, sizeof( struct sockaddr)) == SOCKET_ERROR ) { printf("%s\n","Failed To Bind To Address!"); } else { printf("%s\n","Binded To Address Success!"); } if(listen(ListenSock, 1)==SOCKET_ERROR) { printf("%s\n","Failed To Listen On Address!"); } else { printf("%s\n","Listening On Address!"); } } void WaitForConnections() { while(1) { printf("%s\n","Waiting For Connections!"); AcceptSock = accept(ListenSock , (struct sockaddr*)&sins,0); if(AcceptSock == SOCKET_ERROR) { 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); //RecvBuffer[strlen(RecvBuffer)-1] = '\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; }; #define SERVER //#define CLIENT int _tmain(int argc, _TCHAR* argv[]) { Data DataObject; DataObject.a = 50; DataObject.b = 100; DataObject.c = 200; #ifndef CLIENT TcpClient TcpClientObject; TcpClientObject.InitWinsock(); TcpClientObject.SetAddressInfo(); TcpClientObject.ConnectInfo(); TcpClientObject.SendToSocket((char*)&DataObject); #endif #ifndef SERVER TcpServer TcpServerObject; TcpServerObject.InitWinsock(); TcpServerObject.SetAddressInfo(); TcpServerObject.BindnListen(); TcpServerObject.WaitForConnections(); TcpServerObject.RecieveFromSocket(); #endif return 0; }



LinkBack URL
About LinkBacks




