Hello,

what should I need to change in (I assume) server code to receive
more than one sentence that I seand from Client application.
Here's code:

Client:
Code:
#include <iostream>
#include <winsock2.h>
#include <windows.h>
#include <cstring>

#define PORT 5193
#define Version 0x0002
#define BUFFER_SIZE 1024
char hostname[]="localhost";
char *menu[]={"1. Send data\n","2. End session\n","Your choice: "};

int main()
{	
	char msg[BUFFER_SIZE];
	WSADATA wsaData;
	SOCKET sServer;
	SOCKADDR_IN ServerSockAddr;
	hostent* pHost;
	protoent* pProtocol;
	


	WSAStartup(Version,&wsaData);

	ZeroMemory((void*)&ServerSockAddr,sizeof(ServerSockAddr));
	
	pHost=gethostbyname(hostname);
	if(pHost==NULL)
	{
		std::cout<<"Error! Cannot get host infos!"<<std::endl;
		return 1;
	}
	
	ServerSockAddr.sin_family=AF_INET;
	ServerSockAddr.sin_port=htons(PORT);
	memcpy(&ServerSockAddr.sin_addr,pHost->h_addr,pHost->h_length);
	
	pProtocol=getprotobyname("tcp");
	if(pProtocol==NULL)
	{
		std::cout<<"Error! Cannot get protocol infos!"<<std::endl;
		return 1;
	}

	sServer=socket(AF_INET,SOCK_STREAM,pProtocol->p_proto);
	if(sServer==INVALID_SOCKET)
	{
		std::cout<<"Error! Cannot create socket!"<<std::endl;
		return 1;
	}

	if(connect(sServer,(const sockaddr*)&ServerSockAddr,sizeof(sockaddr))==SOCKET_ERROR)
	{
		std::cout<<"Error! Cannot connect!"<<std::endl;
		return 1;
	}
	
	int end=7;
	do
	{
		
		std::cout<<menu[0];
		std::cout<<menu[1];
		std::cout<<menu[2];
		std::cin>>end;

		switch(end)
		{
		case 1:
			{
				std::cin.clear();
				std::cin.ignore(BUFFER_SIZE, '\n');
				std::cout<<"Enter sentence to send: "; 
				std::cin.getline(msg,BUFFER_SIZE,'\n');
				
				send(sServer,msg,(int)strlen(msg)+1,0);
			}
			break;
		case 2:
			break;
		default:
			std::cout<<"Wrong choice"<<std::endl;
		}

	}while(end !=2);

	closesocket(sServer);
	WSACleanup();
	return 0;
}

Server:
Code:
#include <iostream>
#include <winsock2.h>
#include <windows.h>

#define PORT 5193
#define MAX_CON 5
#define BUFFER_SIZE 1024
#define Version 0x0002

int main()
{
	SOCKADDR_IN ServerSockAddr,ClientSockAddr;
	struct protoent* pProtocolInfo;
	SOCKET sServer,sClient;
	int aLen;
	char msg [BUFFER_SIZE];
	WSADATA wsaData;
	WSAStartup(Version,&wsaData);
	ZeroMemory((void*)&ClientSockAddr,sizeof(ClientSockAddr));
	ZeroMemory((void*)&ServerSockAddr,sizeof(ServerSockAddr));

	ServerSockAddr.sin_family=AF_INET;//stays in host byte order
	ServerSockAddr.sin_port=htons(PORT);//network byte order
	ServerSockAddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//network byte order
	
	if((pProtocolInfo=getprotobyname("tcp"))==0)
	{
		std::cout<<"Error! Cannot get protocol info!"<<std::endl;
		return 1;
	}
	//Creating socket
	sServer=socket(AF_INET,SOCK_STREAM,pProtocolInfo->p_proto);
	if(sServer==INVALID_SOCKET)
	{
		std::cout<<"Error! Cannot create server socket!"<<std::endl;
		return 1;
	}
	
	//Binding socket
	if(bind(sServer,(const sockaddr *)&ServerSockAddr,sizeof(sockaddr))==SOCKET_ERROR)
	{
		std::cout<<"Error! Cannot bind server socket!"<<std::endl;
		return 1;
	}
	
	//Listening for incomming connections
	if(listen(sServer,MAX_CON)==SOCKET_ERROR)
	{
		std::cout<<"Error! Cannot listen for incomming! connections"<<std::endl;
		return 1;
	}
	std::cout<<"Listening for incomming connections!"<<std::endl;

	aLen=sizeof(ClientSockAddr);
	while(true)
	{
		int get;
		sClient=accept(sServer,(sockaddr*)&ClientSockAddr,&aLen);
		if(sClient==SOCKET_ERROR)
		{
			std::cout<<"Error! Cannot accept connection"<<std::endl;
			return 1;
		}

		get=recv(sClient,msg,BUFFER_SIZE,0);
		if(get==SOCKET_ERROR)
		{
			std::cout<<"Receiving error!"<<std::endl;
			return 1;
		}
		if(get==0)
		{
			std::cout<<"Transmission ended!"<<std::endl;
			break;
		}
		else
		{
			std::cout<<msg<<std::endl;
			continue;
		}

	}
	closesocket(sServer);
	closesocket(sClient);
	WSACleanup();
	return 0;
}
When I send first sentence, it is shown in server application, but every other sentence are ignored
Why?

Thanks for help!