Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #define PORT (ushort) 5002
- void dostuff(int, int); /* function prototype */
- void error(const char *msg)
- {
- perror(msg);
- exit(1);
- }
- int main(int argc, char *argv[])
- {
- int sd,ns,len,pid;
- int klient = 1;
- struct sockaddr_in serv,cli;
- len= sizeof(cli);
- sd=socket(AF_INET,SOCK_STREAM,0);
- bzero(&serv,sizeof(serv));
- serv.sin_port=htons(PORT);
- serv.sin_family=AF_INET;
- serv.sin_addr.s_addr=htonl(INADDR_ANY);
- /* varje IP-nummer för klient duger */
- bind(sd,(struct sockaddr *)&serv,sizeof(serv));
- listen(sd,3);
- while(1)
- { ns=accept(sd,(struct sockaddr *)&cli,&len);
- if (ns < 0)
- error("ERROR on accept");
- pid = fork();
- if (pid < 0)
- error("ERROR on fork");
- if (pid == 0)
- {
- close(sd);
- dostuff(ns,klient);
- shutdown(ns,2);
- close(ns);
- exit(0);
- }
- else close(ns);
- }
- close(sd);
- return 0;
- }
- void dostuff (int ns, int klient)
- {
- int i = 0;
- int n;
- char EnArray[3][30] = {"Nå, vad vill du??", "Jaha...", "Ok"};
- char buffer[256];
- while(1) {
- bzero(buffer,256);
- n = read(ns,buffer,255);
- if (n < 0) error("ERROR reading from socket");
- printf("Anrop från klient nr %d: ",klient);
- printf("%s\n", buffer);
- if (strcmp(buffer, "quit\n") == 0) {
- printf("KOMMUNIKATIONEN MED KLIENT NR %d",klient,"AVSLUTAS");
- n = write(ns,"quit",18);
- break;
- } else {
- n = write(ns,EnArray[i],18);
- i++;
- }
- if (n < 0) error("ERROR writing to socket");
- }
- }
Add Comment
Please, Sign In to add comment