Ciao ragazzi ho questo problema: ho un libro (programmare in linux tutto & oltre) ke parla di tutti gli aspetti della programmazione sotto linux, tra cui i socket...
mi interessava fare un client-server come veniva riportato sul libro stesso ma gcc mi da un botto d'errori !!!
questo è il sorgente del server:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>

int main (void)
{
  char buf[200];
  struct sockaddr_in sin;
  struct sockaddr_in pin;
  int sock_descriptor;
  int temp_sock_descriptor;
  int address_size;

  sock_descriptor = socket(AF_INET, SOCK_STREAM, 0);
  bzero(&sin, sizeof(sin));
  sin.sin_family = AF_INET;
  sin.sin_addr.S_un.S_un_b.s_b1=127; // indico l'indirizzo IP
  sin.sin_addr.S_un.S_un_b.s_b2=0;     //soluzione presa da un post su internet
  sin.sin_addr.S_un.S_un_b.s_b3=0;     
  sin.sin_addr.S_un.S_un_b.s_b4=1; 
  
  /*sin.sin_addr.s_addr = INADDR_ANY; "127.0.0.1";*/

  sin.sin_port = htons(8000);
  bind(sock_descriptor, (struct sockaddr *)&sin, sizeof(sin));
  listen(sock_descriptor, 20);
  while(1)
  {
    temp_sock_descriptor = accept(sock_descriptor, (struct sockaddr*)&pin, &address_size);
    recv(temp_sock_descriptor, buf, 16384, 0);
    send(temp_sock_descriptor, buf, sizeof(buf), 0);
    close(temp_sock_descriptor);
  }
  return 0;
}
il primo errore l'ho risolto e cioè ho sostituito l'indirizzo del libro "sin.sin_addr.s_addr = INADDR_ANY" xké non conosce INADDR_ANY, con la soluzione trovata su internet...poi riporta altri errori ke ora non ricordo xké sto su win...

questo è il client:
codice:
#include <stdio.h>
#include <sys/socket.h>

int main (void)
{
  char buf[200];
  struct sockaddr_in pin;
  int socket_descriptor;
  struct hostent *server_host_name;
 
  server_host_name = gethostbyname("127.0.0.1");
  bzero(&pin, sizeof(pin));
  pin.sin_family = AF_INET;
  pin.sin_addr.S_un.S_un_b.s_b1=127; // indico l'indirizzo IP
  pin.sin_addr.S_un.S_un_b.s_b2=0;     //sempre soluzione trovata
  pin.sin_addr.S_un.S_un_b.s_b3=0;
  pin.sin_addr.S_un.S_un_b.s_b4=1; 
  //pin.sin_addr.s_addr = htonl(INADDR_ANY);

  pin.sin_addr.s_addr = ((struct in_addr *)(server_host_name->h_addr))->s_addr;   (*)
  pin.sin_port = htons(8000);
  socket_descriptor = socket(AF_INET, SOCK_STREAM, 0);
  connect(socket_descriptor, (void *)&pin, sizeof(pin));
  send(socket_descriptor, "test data", strlen("test data")+1, 0);
  recv(socket_descriptor, buf, 8192, 0);
  close(sock_descriptor);
  return 0;
}
stessa questione:in "//pin.sin_addr.s_addr = htonl(INADDR_ANY);"
non conosce INADDR e io l'ho sostituito con la soluzione trovata(ke non da problemi), ma poi si incacchia qui (*)....ora come ho già scritto non so quali sono gli errori precisi ke gcc rileva, però ne prova più al client ke al server...

se qualke anima pia dà nokkiata a sti codici me fa un favore!!!io sto a uscicci matto xké quel libro la fa troppo semplice quando invece non funziona
ho provato a spulciare i vari header ma mi so solo confuso....
il mio obiettivo era creare 2 applicazioni (server e client) da far girare contemporaneamente sullo stesso pc e poi dal client mandare rikieste al server...tutto qua!

Thx to all!!!