Клиент серверной программы на С под unix.
использовать не семейство протоколов AF_INET (hd = socket(AF_INET), а семейство PF[AF]_PACKET
Т.е. надо написать клиент который бы посылал пакеты по определенному сетевому интерфейсу.
Реализовать на c под unix.
Как пример, использование AF_INET
#include
#include
#include
#include
#include
#define SIZE sizeof (struct sockaddr_in);
void catcher (int sig);
int newsock;
main()
{int s; char c;
struct sockaddr_in server={AF_INET,7000,INADDR_A};
static struct sigaction act;
act sa_handler=catcher;
sigfillset (&(act sa_mask));
sigaction (SIGPIPE, &act, null);
/*созд сокета"/
if ((sockfd = socket (AF_INET, SOCK_STREAM,0))==-1)
{ perror ("Ошибка вызова сокета");
exit(1);
}
if (bind(sockfd,(struct sockadrr *)& server, SIZE)==-1)
{perror ("Ошибка вызова bind");
exit(1);
}
if (listen (sockfd,5)==-1)
{ perror ("Ошибка вызова listen");
exit(1);
}
for (ii)
{if(newsockfd=accept(sockfd,NULL,NULL)==-1)
{perror ("Ошибка вызова accept");
continue;
}
}
if(fork()==0)
{ while (recv(new_sockfd,&c,1,0)>0)
{c=toupper(c);
send (new_sockfd,&c,1,0)
close (new_sockfd);
exit(0);
}
close (new_sockfd);
exit(0);
}
}
}
void catcher( int sig)
{close (new_sockfd);
exit(0);
}
КЛИЕНТ
#include
#include
#include
#include
#define SIZE SIZEof (struct sock_addr_in)
main()
{
int sockfd; char c,vc;
struct sockaddr_in server = {AF_INET,7000};
server sin_addr s_addr = inet_addr("197.168.10.2");
if (sockfd=socket (AF_INET, SOCK_STREAM,0)==-1)
{ perror ("Ошибка вызова сокета");
exit(1);
}
if (connect (sockfd, (struct sockaddr *)&server, SIZE)==1)
{perror ("Ошибка вызова connect");
exit(1);
}
for (rc='/n';;)
{if (rc =='/n')
printf("Введите строчный символ\n");
c=getchar ();
send (sockfd,&c,1,0);
if(recv(sockfd,&c,1,0>0)
printf("%c",rc);
else
{
printf("Сервер не отвечает\n");
close(sockfd);
exit(1);
}}}