Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
174
Добавлен:
01.04.2014
Размер:
1.87 Кб
Скачать
// подключение библиотек
#include<stdio.h>
#include<iostream.h>
#include<winsock2.h>

//функция решения задачи по 
//удалению центрального символа из строк с нечетным количеством символов
DWORD WINAPI ThreadFunc(LPVOID client_socket) 
{
	SOCKET s2=((SOCKET *) client_socket)[0];
	char buf[100];
	
	
	while(recv(s2,buf,sizeof(buf),0)) 
	{
		cout<<"have a data"<<endl;
		int k;
		k=strlen(buf)-1;
	////////////////
		if(k%2!=0) 
		{
			for(int i=(k/2); i<(k); i++) 
			{
				buf[i]=buf[i+1];
			}
			buf[k] ='\0';
		}
	////////////////
		cout<<buf<<endl;
		send(s2,buf,k,0); 
	}
	closesocket(s2);
	return 0;
}
int numcl=0;

//функция печати на экран количества подключенных клиентов
void print() 
{
	if (numcl) printf("%d client connected\n",numcl);
	else printf("No clients connected\n"); 
}


//главная функция
void main() 
{
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;
	wVersionRequested = MAKEWORD( 2, 2 );
	err = WSAStartup( wVersionRequested, &wsaData );
	if ( err != 0 ) 
	{ 
		return; 
	}
	
	SOCKET s=socket(AF_INET,SOCK_STREAM,0);
	sockaddr_in local_addr;
	local_addr.sin_family=AF_INET;
	local_addr.sin_port=htons(1280);
	local_addr.sin_addr.s_addr=0;
	bind(s,(sockaddr *) &local_addr,sizeof(local_addr));
	int c=listen(s,5);
	cout<<"Server receive ready"<<endl;
	cout<<endl;
	
	// извлекаем сообщение из очереди
	SOCKET client_socket; // сокет для клиента
	
	sockaddr_in client_addr; // адрес клиента(заполняется системой)
	int client_addr_size=sizeof(client_addr);
	
	// цикл извлечения запросов на подключение из очереди
	while((client_socket=accept(s,(sockaddr *)&client_addr, &client_addr_size))) 
	{
		numcl++;
		print();
		
		// Вызов нового потока для обслуживания клиента
		DWORD thID;
		CreateThread(NULL,NULL,ThreadFunc,&client_socket,NULL,&thID);
		
	}	
}
Соседние файлы в папке TCPserv
  • #
    01.04.20141.87 Кб174serv.cpp
  • #
    01.04.20144.33 Кб170TCPserv.dsp
  • #
    01.04.2014539 б170TCPserv.dsw
  • #
    01.04.201441.98 Кб170TCPserv.ncb
  • #
    01.04.201448.64 Кб170TCPserv.opt
  • #
    01.04.20141.3 Кб170TCPserv.plg