PDA

View Full Version : [C] Socket


Darecon
22-03-2008, 14:15
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 5091

int s, new_sd;
struct sockaddr_in myaddr, remoteaddr;
char buff;
int clientlen=sizeof(remoteaddr);
int pid;

int main() {

if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket()");
exit(-1);
}

myaddr.sin_family = AF_INET;
myaddr.sin_addr.s_addr = htonl(INADDR_ANY);
myaddr.sin_port = htons(PORT);
memset(&(myaddr.sin_zero), 0, sizeof(myaddr.sin_zero));

if (bind(s, &myaddr, sizeof(myaddr)) == -1)
{
perror("bind()");
exit(-1);
}

if (listen(s, 5) == -1) {
perror("listen()");
exit(-1);
}
while(1){
fflush(stdout);
new_sd=accept(s,&remoteaddr,&clientlen);
//printf("%d",ntohs(remoteaddr.sin_port));
printf("aaa");
pid=fork();
if(pid==0)
{
//do
//{
recv(new_sd,&buff,sizeof(buff),0);
switch(buff)
{
case '0': break;
case '1': printf("1");
case '2': printf("2");
}

//}while(buff!='0');
printf("%c",buff);
close(new_sd);
exit(0);
}
else
close(new_sd);
}

return (0);
}


Perche' la printf me la stampa 2 volte e se la metto in punti successivi al programma non va (vedi switch)?
Grazie.. :D

cionci
22-03-2008, 14:41
Quale printf ?

Darecon
22-03-2008, 18:34
printf("aaa");

dupa
23-03-2008, 11:19
nei case dello switch se non metti un break al termine di ogni case, lui esegue le istruzioni anche dei case successivi.
dai un occhio alla sintassi di switch case