PDA

Visualizza la versione completa : compilare un listato in c


bic90
28-11-2007, 16:07
Salve a tutti,vi dico subito che uso linux da 2 giorni..
cmq il problema è questo,io ho un listato in c,vado nella finestra del terminale e scrivo il seguente comando gcc -o nome listato.c
l'operazione va a buon fine e nella cartella trovo il file "eseguibile" che si chiama nome. Qui direte be è tutto apposto no?e invece,il problema è che il file non si apre,però nn da errori..quindi,
a voi...
grazie!

psykopear
28-11-2007, 16:09
Originariamente inviato da bic90
Salve a tutti,vi dico subito che uso linux da 2 giorni..
cmq il problema è questo,io ho un listato in c,vado nella finestra del terminale e scrivo il seguente comando gcc -o nome listato.c
l'operazione va a buon fine e nella cartella trovo il file "eseguibile" che si chiama nome. Qui direte be è tutto apposto no?e invece,il problema è che il file non si apre,però nn da errori..quindi,
a voi...
grazie!

come lo apri?

Devi dare da terminale (nella cartella dove c'è il file)

./eseguibile

bic90
28-11-2007, 16:12
ho fatto così e da questa risposta
"usage: client hostname" se volete vi do in allegato i 2 listati che devo eseguire così mi dite se da anche a voi lo stesso errore

psykopear
28-11-2007, 16:22
Originariamente inviato da bic90
ho fatto così e da questa risposta
"usage: client hostname" se volete vi do in allegato i 2 listati che devo eseguire così mi dite se da anche a voi lo stesso errore

non sono pratico, ma a qanto pare dall'errore, devi dare nome comando hostname dell'utente

bic90
28-11-2007, 16:25
e cosa vuol dire??

psykopear
28-11-2007, 16:28
Originariamente inviato da bic90
e cosa vuol dire??

il nome del computer (per esempio ubuntu, o il nome che gli hai dato tu, che poi altro non è che quello che ti compare nel terminale appena aperto. comunque posta il listato, magari qualcuno che è un po più pratico ti può aiutare

bic90
28-11-2007, 16:35
[PHP]
/*
** client.c -- a stream socket client demo
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define PORT 3490 // the port client will be connecting to
#define MAXDATASIZE 100 // max number of bytes we can get at once
int main(int argc, char *argv[])
{
int sockfd, numbytes;
char buf[MAXDATASIZE];
struct hostent *he;
struct sockaddr_in their_addr; // connector's address information
if (argc != 2) {
fprintf(stderr,"usage: client hostname\n");
exit(1);
}
if ((he=gethostbyname(argv[1])) == NULL) { // get the host info
herror("gethostbyname");
exit(1);
}
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}
their_addr.sin_family = AF_INET; // host byte order
their_addr.sin_port = htons(PORT); // short, network byte order
their_addr.sin_addr = *((struct in_addr *)he->h_addr);
memset(their_addr.sin_zero, '\0', sizeof their_addr.sin_zero);
if (connect(sockfd, (struct sockaddr *)&their_addr,
sizeof their_addr) == -1) {
perror("connect");
exit(1);
}
if ((numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) {
perror("recv");
exit(1);
}
buf[numbytes] = '\0';
printf("Received: %s",buf);
close(sockfd);
return 0;
}
[\PHP]

raistlin76
29-11-2007, 09:49
Come ha detto psykopear devi passare al programma il parametro corretto, questo è l'hostname (nome pc) del client.
Io per esempio ecco cosa ho ottenuto dando il seguente comando (ricsvi03 è il mio PC - Ubuntu 7.04):
./prova ricsvi03
connect: Connection refused

Ed è corretto, perchè sulla porta 3490 non c'è nulla sul mio PC.
Scusa la domanda, ma sai come funziona sto programma? Perchè dalle tue domande mi sembra che non hai neanche guardato il codice.
Cmq questo thread non centra nulla con Linux, dovresti provare nel forum Programmazione.

bic90
29-11-2007, 20:41
è un esercizio di scuola, e siccome ho delle difficoltà,ho chiesto qui che c'è della gente bravissima, comunque il codice lo so quasi a memoria!!e che con linux non so fare niente,sto imparando un po' alla volta,(da solo)..comunque grazie intanto..

Loading