All pastes #439716 Raw Edit

Someone

public text v1 · immutable
·published 2007-04-14 14:03 UTC
rendered paste body
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>

#define MY_PORT 5842


unsigned int convert( unsigned int pli );

int main (void) {
  unsigned int uint_buffer[5];
  char buffer[150];
  unsigned int *msg;

  int size, recieved, sent, socket_descriptor;
  int result, i;

  struct sockaddr_in adresa;

  adresa.sin_family = AF_INET;
  adresa.sin_port = htons( MY_PORT );
  inet_aton( "69.55.233.82", &(adresa.sin_addr) );
  memset( &(adresa.sin_zero), '\0', 8 );

  socket_descriptor = socket( PF_INET, SOCK_STREAM, 0 );

  result = connect( socket_descriptor, (struct sockaddr *)&adresa, sizeof(struct sockaddr) );

  if ( result == -1 ){
    perror("connect() :");
    return 1;
  }

  size = 5;
  recieved = recv( socket_descriptor, uint_buffer, size, 0 );

  printf("\n");
  for (i = 0; i < 4 ; i++){
    uint_buffer[i] = convert(uint_buffer[i]);
    printf("%d] %u \n",i,uint_buffer[i]);
  }

  if (recieved == 4){
    uint_buffer[4] = uint_buffer[0] + uint_buffer[1] + uint_buffer[2] + uint_buffer[3];
  }

  printf("result ==> %u\n",uint_buffer[4]);

  msg = &uint_buffer[4];
  size = 149;

  sent = send( socket_descriptor, msg, 1, 0);
  recieved = recv( socket_descriptor, buffer, size, 0 );
  buffer[150] = '\0';

  printf( "sent ==> %d\n", sent );
  printf( "ANSWER ==> %s\n", buffer );

  close( socket_descriptor );

  return 0;

}

unsigned int convert( unsigned int pli ){
  char *p;
  char *r;
  unsigned int result;
  int i = 0;
  size_t size;

  size = sizeof(unsigned int);

  p = ( char* )&pli;
  r = ( char* )&result;

  for(i=0;i<size;i++){
    r[size-i] = p[i];
  }

  return result;
}