Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- short connected = 1;
- do
- {
- // Send initial request on first pass
- // Afterwards send the resposne we were given
- n = write(sockfd, buffer, strlen(buffer));
- if (n < 0)
- error("Failed to send messege. Terminating.");
- printf("%sn", buffer);
- // Any errors?
- if (strcmp(buffer, "Session key does not match. Terminating.") == 0)
- error(buffer);
- // Get session key response
- bzero(buffer, BUFFER_LENGTH);
- n = read(sockfd, buffer, BUFFER_LENGTH);
- if (n < 0)
- error("Could not fetch result. Terminating.");
- printf("%sn", buffer);
- sleep(1);
- } while (connected == 1);
- sockfd = socket(AF_INET, SOCK_STREAM, 0);
- if (sockfd < 0)
- {
- printf("Error opening socket.n");
- exit(0);
- }
- // Taken from reference
- bzero((char *) &serv_addr, sizeof(serv_addr));
- portNumber = atoi(argv[1]);
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_addr.s_addr = INADDR_ANY;
- serv_addr.sin_port = htons(portNumber);
- if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
- {
- printf("ERROR on binding.n");
- close(sockfd);
- exit(0);
- }
- // Add listner to socket and wait until we are given something to do
- // Taken from reference
- listen(sockfd, 5);
- clilen = sizeof(cli_addr);
- newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
- if (newsockfd < 0)
- {
- printf("ERROR on accept.n");
- close(sockfd);
- exit(0);
- }
- // Get initial session key request
- bzero(buffer,BUFFER_LENGTH);
- n = read(newsockfd, buffer, BUFFER_LENGTH);
- if (n < 0)
- {
- printf("ERROR reading from socket.n");
- close(newsockfd);
- close(sockfd);
- exit(0);
- }
- // ... a bunch of processing of data
- n = write(newsockfd, response, lengthOfKey + 15 + 1);
- if (n < 0)
- {
- printf("ERROR writing to socket.n");
- close(newsockfd);
- close(sockfd);
- exit(0);
- }
- close(newsockfd);
- // Get the previous key(s) now (we hope)
- short connected = 1;
- while (connected < 100)
- {
- printf("waiting...n");
- newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
- //... more processing
- }
Add Comment
Please, Sign In to add comment