All pastes #286854 Raw Edit

Egio nx

public cpp v1 · immutable
#286854 ·published 2006-12-20 23:22 UTC
rendered paste body
#include <iostream>#include <cstdlib>#include <cstring>#include <stdio.h>#include <time.h>#include "winsock.h"using namespace std;//---------------( Serveris )-------------------------------int start (SOCKET s, unsigned short port){    //    char                myname[256];    struct sockaddr_in  sa;    struct hostent      *hp;    //    memset (&sa, 0, sizeof (struct sockaddr_in));       gethostname (myname, sizeof (myname));              hp = gethostbyname (myname);                        if (hp == NULL)    {                                                       return -1;    };    sa.sin_family = hp->h_addrtype;                     sa.sin_port = htons (port);                         if (bind (s, (struct sockaddr *) &sa, sizeof (struct sockaddr_in)) == SOCKET_ERROR)    {        closesocket (s);        return -2;    }    listen (s, 3);                                      return 0;}//-----------------------------( Serveris.end )------------------------------//-------------------------------( Main )------------------------------------int main (){    int     pid;    int     kelintas=0;    int     c=0;        char    inbuff[1] = "";    char    command[10] = "";    char    outBuff[255] = "";        char    inbuff2[1] = "";    char    eilute[256] = "";    char    ats[100] = "";//    char    atsakymas[256] "";        WSADATA info;    if (WSAStartup (MAKEWORD (1, 1), &info) != 0)    {        cout << "!WSAStartup() nepavyko" << endl;        return -1;    }    SOCKET servSocket = socket (AF_INET, SOCK_STREAM, 0);    unsigned short  port;    cout << "Iveskite porta\n" << endl;    cin >> port;        start (servSocket, port);    //cout << "!serveris uzkrautas" << endl;    for (;;)    {        	cout << "laukiama prisijungimo" << endl;	SOCKET  sock = accept (servSocket, NULL, NULL);        if (sock == INVALID_SOCKET)        {            cout << "!erroras accepte\n" << endl;            exit (1);        }        cout << "prisijungta" << endl;	// FORK		pid = fork();	kelintas++;	/*cout << "Tryng to start new p:" << pid << endl;*/	if (pid < 0)	{	    cout << "Error: fork()" << endl;	    kelintas--;	    exit(1);	} 	else if (pid)	{  	  cout << "started child no: " << kelintas << endl;	    	    strcat (outBuff, "*** Prisijungimas prie serverio sekmingas *** !\nKomandos: \n[1] - kalbeti su operatoriumi,\n[2] - iseiti\n#");    	    send (sock, outBuff, strlen (outBuff), 0);	    cout << "outBuff pries memset: " << outBuff << endl;    	    memset (outBuff, 0, 255);	    cout << "outBuff po memset:   "  << outBuff << endl;    	    for (;;)    	    {	        	// RECIEVE        	while (inbuff[0] != '#')        	{            	    if (recv (sock, inbuff, 1, 0) > 0) strncat (command, inbuff, 1);        	}        	cout << "\n- (no." << kelintas << ")\nkomanda: " << command << endl;        	//Operatorius [1]        	if (!strcmp (command, "1#"))        	{		  		  strcat (outBuff, "Operatorius jusu klauso!#" );		  send (sock, outBuff, strlen (outBuff), 0);		  cout << "outBuff pries memset: " << outBuff << endl;		  memset (outBuff, 0, 255);		  cout << "outBuff po memset:    " << outBuff << endl;		  for (;;)		  {		    //Recieve_inner		    while (inbuff2[0] != '#')		    {		      if (recv (sock, inbuff2, 1, 0) > 0) strncat (eilute, inbuff2, 1);		    }		    cout << "gavaom is kliento: " << eilute << endl;		    cout << "Operatorius atsako:\n" << endl;		    cout << "outBuff:  " << outBuff << endl;		    cin  >> outBuff;		    outBuff[strlen(outBuff)] = '#';		    send (sock, outBuff, strlen (outBuff), 0);		    memset (outBuff, 0, 255);		  }        	}        	// EXIT        	else if (!strcmp (command, "2#"))        	{            	    strcat (outBuff, "#");            	    send (sock, outBuff, (int) strlen (outBuff), 0);            	    break;        	}        	// BAD COMMAND        	else        	{            	    strcat (outBuff, "nezinoma komanda\n");            	    send (sock, outBuff, (int) strlen (outBuff), 0);        	}        	                strcat (outBuff, "#");                // NULL BUFFERS                memset (inbuff, 0, 1);                memset (command, 0, 10);	        memset (outBuff, 0, 255);    	    }    	    cout << "session no." << kelintas << " closed" << endl;	    //close(socket);	}    }    return 0;}