#include #include #include #include #include #include #include #include #include int main(int argc, char ** argv){ struct sockaddr_in sad; sad.sin_port = htons(5143); sad.sin_addr.s_addr = INADDR_ANY; sad.sin_family = AF_INET; int skt = socket(AF_INET, SOCK_DGRAM, 0); // Step 1 if(skt == -1){ perror("socket"); return 1; } if( bind(skt, (struct sockaddr*)(&sad), sizeof(struct sockaddr_in)) ){ // step 2 perror("bind"); return 1; } char buffer[2048]; while(1){ struct sockaddr_in client_address; socklen_t address_size = sizeof(struct sockaddr_in); size_t readlen = recvfrom(skt, buffer, 2047, 0, (struct sockaddr*)&client_address, &address_size); buffer[readlen-1] = 0; printf("Recieved %s "); printf("from address %s\n", inet_ntoa(client_address.sin_addr)); sprintf(buffer, "Received your message of %d bytes\n", readlen); sendto(skt, buffer, strlen(buffer), 0, (struct sockaddr*)&client_address, address_size); sleep(2); sprintf(buffer, "It's been 2 seconds. Are you still there?"); ssize_t sendlen = sendto(skt, buffer, strlen(buffer), 0, (struct sockaddr*)&client_address, address_size); printf("Sent %d bytes\n", sendlen); } return 0; }