Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* A simple server in the internet domain using TCP
- The port number is passed as an argument */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- void error(const char *msg)
- {
- perror(msg);
- exit(1);
- }
- int main(int argc, char *argv[])
- {
- int packetlen = 64;
- int sockfd, newsockfd, portno;
- socklen_t clilen;
- char buffer[1518];
- struct sockaddr_in serv_addr, cli_addr;
- int n;
- int issetPortNr = 0;
- int serveroption = 0;
- while(serveroption != 9)
- {
- printf(":::TCP MENU:::\n\n 1. IP address\n 2. Port\n 3. Packet length\n 4. Upstream\n 5. Downstream\n 6. Upstream/Downstream\n 7. Start server \n 8. Back\n 9. Exit\n\n >");
- scanf("%d", &serveroption);
- switch(serveroption)
- {
- case 1:
- /*cout << "write ip address" << endl;
- cin >> ipadr;
- cout << ipadr << endl;
- */system("pause");
- system("clear");
- break;
- //Port
- case 2:
- printf("write port number\n");
- scanf("%d", &portno);
- issetPortNr = 1;
- system("clear");
- break;
- //Packet length
- case 3:
- printf("write packet length\n");
- scanf("%d", &packetlen);
- system("clear");
- break;
- //Upstream
- case 4:
- system("clear");
- break;
- //Downstream
- case 5:
- system("clear");
- break;
- //Upstream/Downstream
- case 6:
- system("clear");
- break;
- case 7:
- system("clear");
- serveroption = 9;
- printf("%d\n", portno);
- if (argc < 2) {
- fprintf(stderr,"ERROR, no port provided\n");
- exit(1);
- }
- sockfd = socket(AF_INET, SOCK_STREAM, 0);
- if (sockfd < 0)
- error("ERROR opening socket");
- bzero((char *) &serv_addr, sizeof(serv_addr));
- if (issetPortNr == 0)
- {
- portno = atoi(argv[1]);
- }
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_addr.s_addr = INADDR_ANY;
- serv_addr.sin_port = htons(portno);
- if (bind(sockfd, (struct sockaddr *) &serv_addr,
- sizeof(serv_addr)) < 0)
- error("ERROR on binding");
- listen(sockfd,5);
- clilen = sizeof(cli_addr);
- newsockfd = accept(sockfd,
- (struct sockaddr *) &cli_addr,
- &clilen);
- if (newsockfd < 0)
- error("ERROR on accept");
- bzero(buffer,packetlen);
- n = read(newsockfd,buffer,packetlen);
- if (n < 0) error("ERROR reading from socket");
- printf("Here is the message: %s\n",buffer);
- printf("%d\n", n );
- n = write(newsockfd,"I got your message",18);
- if (n < 0) error("ERROR writing to socket");
- close(newsockfd);
- close(sockfd);
- break;
- //Back
- case 8:
- system("clear");
- break;
- //Exit
- case 9:
- system("clear");
- serveroption = 3;
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement