/* * Function to handle a TCP echo client * Copyright (C) 2001 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include // For CSocket const int RECVBUFSIZE = 32; // Size of receive buffer void DieWithError(char* errorMessage); // Error handling function void HandleTCPClient(CSocket& clntSock) { char echoBuffer[RECVBUFSIZE]; // Buffer for echo string int recvMsgSize; // Size of received message // Recieve message from client recvMsgSize = clntSock.Receive(echoBuffer, RECVBUFSIZE, 0); if (recvMsgSize < 0) { DieWithError("clntSock.Receive() failed"); } // Send received string and receive again until end of transmission while (recvMsgSize > 0) { // Echo message back to client if (clntSock.Send(echoBuffer, recvMsgSize, 0) != recvMsgSize) { DieWithError("clntSock.Send() sent a different number of bytes than received"); } // See if there is more data to receive recvMsgSize = clntSock.Receive(echoBuffer, RECVBUFSIZE, 0); if (recvMsgSize < 0) { DieWithError("clntSock.Receive() more failed"); } } clntSock.Close(); // Close client socket }