Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <netdb.h>
- #include <unistd.h>
- #include <string.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <sys/wait.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include <signal.h>
- struct Student {
- char nazwa[50];
- char indeks[7];
- };
- void childend(int signo){
- wait(NULL);
- }
- int main (int argc, char *argv[])
- {
- struct Student PCH;
- strcpy( PCH.nazwa, "PCH");
- strcpy( PCH.indeks, "116658");
- struct Student ja2;
- strcpy( ja2.nazwa, "hubert");
- strcpy( ja2.indeks, "132285");
- signal(SIGCHLD, childend);
- int sfd,cfd,on=1;
- char indeks_in[7];
- struct sockaddr_in saddr,caddr;
- socklen_t sl;
- saddr.sin_family = AF_INET;
- //zapisanie adresu ip, konwenterowanego do bitow ta funkcja
- saddr.sin_addr.s_addr = INADDR_ANY;
- saddr.sin_port = htons(1234);
- sfd = socket(PF_INET, SOCK_STREAM, 0);
- setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (char*) &on, sizeof(on));
- bind(sfd, (struct sockaddr*) &saddr, sizeof(saddr));
- listen(sfd,5);
- int i = 1;
- while(i>0){
- sl = sizeof(caddr);
- cfd = accept(sfd, (struct sockaddr*) &caddr, &sl);
- i = fork();
- if(i==0){
- close(sfd);
- printf("new connection %s: %d\n",inet_ntoa(caddr.sin_addr), ntohs(caddr.sin_port));
- read(cfd, &indeks_in, 7);
- if( strncmp(indeks_in, PCH.indeks, 6) == 0)
- {
- write(cfd,PCH.nazwa,3);
- }else if ( strncmp(indeks_in, ja2.indeks, 6) == 0)
- {
- write(cfd,ja2.nazwa,6);
- }else{
- write(cfd,"nieznany",8);
- }
- close(cfd);
- exit(EXIT_SUCCESS);
- }
- close(cfd);
- }
- close(sfd);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement