void sender(char *message1, char *message2,char *machine, int port) { int s, n; char message[SIZE]; struct sockaddr_in mySocketAddress, yourSocketAddress; if(( s = socket(AF_INET, SOCK_DGRAM, 0))<0) { perror("socket failed"); return; } /* if((x = setsockopt(s, SOL_SOCKET, SO_BROADCAST, &arg, sizeof(arg))<0) perror("setsockopt SO_BROADCAST---"); exit(-1); */ makeLocalSA(&mySocketAddress); if( bind(s, (struct sockaddr *)&mySocketAddress, sizeof(struct sockaddr_in))!= 0){ perror("Bind failed\n"); close (s); return; } printSA(mySocketAddress); makeDestSA(&yourSocketAddress,machine, port); printSA(yourSocketAddress); strcpy(message,message1); if( (n = sendto(s, message, strlen(message), 0, (struct sockaddr *)&yourSocketAddress, sizeof(struct sockaddr_in))) < 0) perror("Send failed\n"); if(n != strlen(message)) printf("sent %d\n",n); strcpy(message,message2); if( (n = sendto(s, message, strlen(message), 0, (struct sockaddr *)&yourSocketAddress, sizeof(struct sockaddr_in))) < 0) perror("Send failed\n"); if(n != strlen(message)) printf("sent %d\n",n); close(s); }
int main() { int s, n, sk1, i; int port = REC_PORT; /* Server's port */ struct sockaddr_in sa; /* socket adress structure */ struct hostent *host; char h[20]; struct info x, list1[REC]; printf("Enter server name:"); fgets(h, 20, stdin); h[strlen(h) - 1] = 0; /* replace newline character put in by fgets */ /* with null */ sa=makeDestSA(h, port); /* client socket */ if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) return; else { printf("First name: "); /* query input*/ fgets(x.name1, 15, stdin); printf("Last name:"); fgets(x.name2, 15, stdin); printf("Phone:"); fgets(x.phone, 10, stdin); x.name1[strlen(x.name1) - 1] = 0; x.name2[strlen(x.name2) - 1] = 0; x.phone[strlen(x.phone) - 1] = 0; /* connect to server */ if(connect(s, (struct sockaddr *)&sa,sizeof(struct sockaddr_in)) < 0 ) { perror("Connection refused\n"); return; } else { /*send to socket - receive from socket */ write(s, &x, sizeof(struct info)); read(s , &sk1, sizeof(int)); if(sk1 < 0) { printf("\nNot found in directory: %s %s %s\n", x.name1, x.name2, x.phone); } else { for(i=0;i<=sk1;i++) read(s, &list1[i], sizeof(struct info)); printf("Retrieved data for: %s; %s; %s;\n",x.name1, x.name2, x.phone); for(i=0;i<=sk1;i++) printf("*-*: %s, %s, %s\n",list1[i].name1, list1[i].name2, list1[i].phone); } close(s); } } return; }