Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
98
Добавлен:
20.02.2016
Размер:
1.81 Кб
Скачать
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>

#define MAXLEN 1000
#define PORTNUM 2222

void reverse(char *buf, int len)
{
	int i;
	char temp;
	for (i = 0; i<(len - 1) / 2; i++)
	{
		temp = buf[i];
		buf[i] = buf[len - i - 2];
		buf[len - i - 2] = temp;
	}

}

void upper(char *buf, int len)
{
	int i;
	int de = 'а' - 'А';
	int dr = 'я' - 'Я';
	for (i = 0; i < len - 1; i++)
	{
		if (buf[i] >= 'a' && buf[i] <= 'z')
		{
			buf[i] = buf[i] - de;
		}

		if (buf[i] >= 'а' && buf[i] <= 'я')
		{
			buf[i] = buf[i] - dr;
		}

	}
}

int main(void)
{
	char buf[MAXLEN];
	int len, mysocket, consocket;
	struct sockaddr_in dest, serv;
	socklen_t socksize = sizeof(struct sockaddr);
	memset(&serv, 0, sizeof(serv));
	serv.sin_family = AF_INET;
	serv.sin_addr.s_addr = htonl(INADDR_ANY);
	serv.sin_port = htons(PORTNUM);
	mysocket = socket(AF_INET, SOCK_STREAM, 0);
	bind(mysocket, (struct sockaddr *) &serv, sizeof(serv));
	/**/printf("server start listening, mysocket = %d\n", mysocket);
	listen(mysocket, 1);
	/**/printf("server end listening, try to accept\n");
	consocket = accept(mysocket, (struct sockaddr*)&dest, &socksize);
	while (consocket)
	{
		len = recv(consocket, buf, MAXLEN, 0);
		/**/printf("server string recieved %s, len = %d\n", buf, len);
		if (len != 0 && strcmp(buf, "con") == 0)
			/**/printf("server connection proved\n");
		else if (len != 0)
		{
			upper(buf, len);
			/**/printf("server string reversed %s\n", buf);
			send(consocket, buf, len, 0);
			/**/printf("server string sent\n");
		}
		else break;
		close(consocket);
		consocket = accept(mysocket, (struct sockaddr*)&dest, &socksize);
		/**/printf("server accepted consocket=%d\n", consocket);
	}
	/**/printf("server end\n");
	close(mysocket);
	getchar();
	return 0;
}
Соседние файлы в папке 2