class CCybServer{ public: SOCKET m_CybSocket; //listening socket SOCKET m_ClientSocket; //client socket SOCKADDR_IN m_SockIn; //address of serve SOCKADDR_IN m_SockAccept; //client address WSADATA m_WSAData; //for init int m_iMaxPendingConnects; //how many to que int m_iAcceptLength; int m_iReceive; int m_iIndex; bool m_bUsed; int m_iClients; int m_iID; timeval timeout; //how long to wait char m_szReceive[100]; TCHAR m_szReceiveString[100]; int CreateSocket(int iPortNumber); int Listen(); int Accept(); int Receive(); int Convert(); int ShutDown(); int CloseSocket(); int Send(char *szSendString); int Init(); int CleanUp();};class CCybClient{ public: SOCKET m_ServerSocket; SOCKADDR_IN m_SockIn; PHOSTENT m_phostent; WSADATA m_WSAData; int m_iAcceptLength; int m_iReceive; int m_iIndex; bool m_bUsed; char m_szReceive[100]; TCHAR m_szReceiveString[100]; int CreateSocket(); int GetHost(char *szHostName, int iPortNumber); int Connect(); int Receive(); int Send(char *szSendString); int Init(); int CleanUp(); int ShutDown(); int CloseSocket();};int CCybServer::Init(){ if (WSAStartup (MAKEWORD(1,1),&m_WSAData) != 0) { cout<<"Failed Startup"; return FALSE; } m_bUsed=false; m_iClients=0; return 0;}int CCybClient::Init(){ if (WSAStartup (MAKEWORD(1,1),&m_WSAData) != 0) { cout<<"Failed Startup"; return FALSE; } m_bUsed=false; return 0;}//Open up sockeint CCybServer::CreateSocket(int iPortNumber){//Identical (almost) to tutorial m_SockIn.sin_family = AF_INET; m_SockIn.sin_port = htons (iPortNumber); m_SockIn.sin_addr.s_addr = htonl (INADDR_ANY);//Create the socket (listening) if ((m_CybSocket = socket (AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { cout<<"Failed Create"; return FALSE; } //bind newly created socket if (bind (m_CybSocket,(struct sockaddr *) &m_SockIn, sizeof (m_SockIn)) == SOCKET_ERROR) { //cout<<"Failed bind"; closesocket (m_CybSocket); return FALSE; } return 0;}//Anyone there?int CCybServer::Listen(){ if(listen (m_CybSocket, m_iMaxPendingConnects) == SOCKET_ERROR) { //cout<<"Failed listen"; closesocket (m_CybSocket); return FALSE; } m_iAcceptLength = sizeof (m_SockAccept); /*TUTORIAL: MAKE ALL CLIENTS=NOT IN USE?*/ return 0;}//THIS IS WHAT IS RADICALLY DIFF FROM TUTORIAL!!! int CCybServer::Accept(){//if(stored>0) //someone wants in//{ //cout<<endl<<"ACCEPTED";if(m_CybSocket!=0){m_ClientSocket = accept (m_CybSocket, (struct sockaddr *) &m_SockAccept, (int *) &m_iAcceptLength); cout<<endl<<"ACCEPTED"; m_bUsed=true;}//} //closesocket(m_CybSocket); return 1;}int CCybServer::Receive(){ m_iReceive = recv (m_ClientSocket, m_szReceive, sizeof (m_szReceive), 0); if (m_iReceive == SOCKET_ERROR) { //cout<<"Failed receive"; return FALSE; } else { for (m_iIndex = 0; m_iIndex <= sizeof (m_szReceive); m_iIndex++) m_szReceiveString[m_iIndex] = m_szReceive[m_iIndex]; } return 0;}int CCybServer::Send(char *szSendString){ if (send (m_ClientSocket, szSendString, strlen (szSendString) + 1, 0) == SOCKET_ERROR) { //cout<<"Failed send"; return FALSE; } return 0;}int CCybServer::ShutDown() { shutdown (m_ClientSocket, 0x02); return 0; } int CCybServer::CloseSocket() { closesocket (m_ClientSocket); return 0; }int CCybServer::CleanUp(){ WSACleanup (); return 0;}int CCybClient::ShutDown() { shutdown (m_ServerSocket, 0x00); return 0; } int CCybClient::CloseSocket() { closesocket (m_ServerSocket); return 0; } int CCybClient::CleanUp(){ WSACleanup (); return 0;}int CCybClient::CreateSocket(){ if ((m_ServerSocket = socket (AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { return FALSE; } m_SockIn.sin_family = AF_INET; return 0;}int CCybClient::GetHost(char *szHostName, int iPortNumber){ // Retrieve the host information corresponding to the host name. if ((m_phostent = gethostbyname (szHostName)) == NULL) { closesocket (m_ServerSocket); return FALSE; } // Assign the socket IP address. memcpy ((char FAR *)&(m_SockIn.sin_addr), m_phostent->h_addr, m_phostent->h_length); // Convert to network ordering. m_SockIn.sin_port = htons (iPortNumber); return 0;}int CCybClient::Connect(){ if (connect (m_ServerSocket, (PSOCKADDR) &m_SockIn, sizeof (m_SockIn)) == SOCKET_ERROR) { closesocket (m_ServerSocket); return FALSE; } return 0;}int CCybClient::Send(char *szSendString){ if (send (m_ServerSocket, szSendString, strlen (szSendString) + 1, 0) == SOCKET_ERROR) { //cout<<"BANG BANG"; return FALSE; } return 0;}int CCybClient::Receive(){ //cout<<"Receiving."; m_iReceive = recv (m_ServerSocket, m_szReceive, sizeof (m_szReceive), 0); if (m_iReceive == SOCKET_ERROR) { cout<<"Failed receive"; return FALSE; } else { for (m_iIndex = 0; m_iIndex <= sizeof (m_szReceive); m_iIndex++) m_szReceiveString[m_iIndex] = m_szReceive[m_iIndex]; } return 0;}
Someone please tell me how to put that in a code box?
That's what I've got for my CybServer/Client classes
Why can't I bind them all to 5000?
[edited by - DycewareInd on October 4, 2002 5:53:36 PM][edited by - DycewareInd on October 5, 2002 12:05:23 PM]