I'm trying to setup a connection between a client and a server using sockets.
I'm doing:
test.h:
---------
server.c:Code:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <signal.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ipc.h> #include <sys/shm.h> #define MYSOCKET "/tmp/mysocket" #define LISENQ 20 void error(char *msg) { perror(msg); exit(1); }
----------
client:Code:#include "test.h" int main() { struct sockaddr serveraddr, clientaddr; int sd, sd_new; socklen_t serverlen, clientlen; char buf[256]; sd = socket(AF_UNIX, SOCK_STREAM, 0); if (sd < 0) error("server socket failure"); bzero(&serveraddr, sizeof(serveraddr)); bzero(&clientaddr, sizeof(clientaddr)); serveraddr.sa_family = AF_UNIX; strcpy(serveraddr.sa_data, MYSOCKET); serverlen = sizeof(serveraddr.sa_family) + strlen(serveraddr.sa_data); clientlen = sizeof(clientaddr.sa_family) + strlen(clientaddr.sa_data); unlink(MYSOCKET); if (bind(sd, (struct sockaddr *)&serveraddr, serverlen) < 0) error("server bind failure"); if (listen(sd, LISENQ) < 0) error("server listen failure"); for(;;) { sd_new = accept(sd, (struct sockaddr *)&clientaddr, &clientlen); if (sd_new < 0) error("server accept failure"); if (fork() == 0) { read(sd_new, buf, sizeof(buf)); printf("Got msg: %s", buf); close(sd_new); exit(0); } close (sd); } return 0; }
-------
- server runs and waitsCode:#include "test.h" int main() { struct sockaddr serveraddr; int sd; socklen_t serverlen; char buf[256]; sd = socket(AF_UNIX, SOCK_STREAM, 0); if (sd < 0) error("client socket failure"); serveraddr.sa_family = AF_UNIX; strcpy(serveraddr.sa_data, MYSOCKET); serverlen = sizeof(serveraddr.sa_family) + strlen(serveraddr.sa_data); if (connect(sd, (struct sockaddr *)&serveraddr, serverlen) < 0); error("client connect failure"); puts("client connected!"); while(1) { printf(">> "); scanf("%s", &buf); write(sd, buf, sizeof(buf)); } close(sd); return 0; }
- client runs and stops with message : client connect failure: Success
and crashes the server with msg: Got msg: �Ҋ�server accept failure: Bad file descriptor
need some advice please



LinkBack URL
About LinkBacks


