Добавил:
Novilit
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные по работе с linux / 2 / server
.c#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;
}