Пример #1
0
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);
}
Пример #2
0
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;
}