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;}