Originariamente inviato da XWolverineX
cosa non sai fare del secondo punto?
non sai utilizzare gli argomenti del main per la riga del comando? non sai come aprire il device specificato?
Posta anche il codice del primo punto, per sapere meglio come stai lavorando.
Ok ti posto il codice, premetto che il programma S relativo al primo punto dovrebbe essere una applicazione server, quindi sto' provando questo codice:
Server:
Codice PHP:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h> /* socket(), bind(), listen(), accept() */
#include <netinet/in.h>
#define PORT 4000
int main (int argc, char* argv[])
{
int fd, newfd, clen;
struct sockaddr_in saddr, caddr;
char command;
char buf[1000];
saddr.sin_family = AF_INET;
saddr.sin_addr.s_addr = INADDR_ANY;
saddr.sin_port = htons((u_short) PORT);
fd = socket(AF_INET, SOCK_STREAM, 0);
bind(fd, (struct sockaddr *) &saddr, sizeof(saddr));
listen(fd, 5);
printf("Waiting for connections...\n");
newfd = accept(fd, (struct sockaddr*) &caddr, &clen);
printf("\n\nConnection accepted!\n");
while(1) {
recv(newfd, &command,1,0);
switch(command) {
case 'a':
printf("A");
//write(newfd, "A", strlen("A"));
//write(1, "A",strlen("A"));
send(newfd, "A",1,0);
break;
case 'b':
send(newfd, "B",1,0);
break;
default:
send(newfd, "X",1,0);
break;
}
}
close(newfd);
close(fd);
return 0;
}
con questo codice relativo al client:
Codice PHP:
#include <stdio.h>
#include <stdlib.h> /* exit() */
#include <sys/types.h>
#include <sys/socket.h> /* socket(), bind(), listen(), accept() */
#include <netinet/in.h>
#define PORT 4000
int main (int argc, char* argv[])
{
int fd, err;
struct sockaddr_in saddr;
char command, result;
char buf[1000];
saddr.sin_family = AF_INET;
saddr.sin_port = htons((u_short) PORT);
saddr.sin_addr.s_addr = inet_addr(argv[1]);
fd = socket(AF_INET, SOCK_STREAM, 0);
err = connect(fd, (struct sockaddr *) &saddr, sizeof(saddr));
if (err == 0) {
printf("sono qui!!!");
command = getchar();
send(fd, &command, 1, 0);
while (recv(fd, &result, 1, 0) != 1)
//do nothing
printf("Sono qui!!");
;
printf("%s",result);
putchar (result);
}
else {
printf ("Connection error\n");
close(fd);
exit(1);
}
close(fd);
}
ma fino ad ora ho ottenuto dal server il messaggio di "connection accepted!", ma se invio i caratteri 'a' o 'b' o qualcos altro al server, non mi risponde!
Questo codice in effetti non c'entra molto con l'esercizio che devo fare, ma e' solo per provare la comunicazione tra i processi, cosa questa importante per l'esercizio.
Spero di non aver creato troppa confusione, come sono solito fare...
Grazie