Re: [Programación] pasaje de mensajes a un socket

emiliano laneri elaneri en gmail.com
Sab Mar 1 12:13:43 ARDT 2008


> Buenas Lista, mi pregunta es como pasar mensajes a traves de SOCKET.
>  Es programacion bajo linux. Estoy estudiando bajo el libro de
>  Unix_Network_programming y no sale lo que necesito.


yo tengo este ejemplo de socket en c funciona por lo menos en linux =)

server

 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <netdb.h>
 #include <iostream>
 #include <unistd.h>
 #define SADDR struct sockaddr *

void *print_message_function( void *ptr );

int main() {

  struct sockaddr_in sa; char buf[1024];
  int s, i, n = sizeof(sa);

  if ((s=socket(AF_INET,SOCK_STREAM,0)) < 0) return(1);// make socket
  sa.sin_family = AF_INET;                             // set type
  sa.sin_addr.s_addr = htonl(INADDR_ANY);              // set wildcard
  sa.sin_port = htons(6001);                           // set port

 if ( bind(s, (SADDR)&sa, n) < 0 ) return(1);         // bind address

  listen(s, 5);                                        // queue callers

  if ( ( s = accept(s, (SADDR)0, 0) ) < 0 ) return(1); // accept call
	  i = read(s, buf, 1024);                              // read message
	  buf[i] = (char)0;                                    // mark its end
	 printf ("Message: %s" , buf );

}

cliente

 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <netdb.h>
 #include <string.h>
 #include <unistd.h>
 int main(int argc, char *argv[]) {
  struct hostent *hp; struct sockaddr_in sa;
  int    s, n = sizeof(struct sockaddr_in);
  if ((s=socket(AF_INET,SOCK_STREAM,0)) < 0) return(1);// make socket
  if ( (hp = gethostbyname(argv[1])) == 0 ) return(1); // host details
  memset(&sa, 0, n);                                   // init struct
  memcpy(&sa.sin_addr, hp->h_addr, hp->h_length);      // set host
  sa.sin_port = htons(6001);                           // set port
  sa.sin_family = AF_INET;                             // set type
  if (connect(s,(struct sockaddr *)&sa,n)<0) return(1);// connect
  write(s, argv[2], strlen(argv[2]));                  // send message
 }

suerte
-- 
registered linux user #464005
mgnu.com.ar

Saludos emi	
		.

			.

	.	.	.


Más información sobre la lista de distribución Programacion