p2p.wrox.com Forums

p2p.wrox.com Forums (http://p2p.wrox.com/)
-   BOOK Beginning Linux Programming, 3rd Edition (http://p2p.wrox.com/book-beginning-linux-programming-3rd-edition-120/)
-   -   broken pipe error in implementing client -server (http://p2p.wrox.com/book-beginning-linux-programming-3rd-edition/54988-broken-pipe-error-implementing-client-server.html)

octavius March 6th, 2007 01:24 PM

broken pipe error in implementing client -server
 
i am new to socket programming...when i was trying the code given in the book for client-server model using socket programming, i faced a broken pipe error in the server program

--------------client.c-------------------
#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<sys/un.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{ int sockfd;
        int len;
        struct sockaddr_un address;
        int result;
        char ch='A';

        sockfd=socket(AF_UNIX,SOCK_STREAM,0);

        address.sun_family=AF_UNIX;
        strcpy(address.sun_path,"server_socket");
        len=sizeof(address);

        result=connect(sockfd,(struct sockaddr *)&address,len);
        if(result=-1)
        { perror("oops:client");
                exit(1);
        }

        write(sockfd,&ch,1);
        read(sockfd,&ch,1);
        printf("char from server=%c\n",ch);
        close(sockfd);
        exit(0);
}
--------------server.c-----------------
#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<sys/un.h>
#include<unistd.h>

int main()
{
        int server_sockfd,client_sockfd;
        int server_len,client_len;
        struct sockaddr_un server_address;
        struct sockaddr_un client_address;
        char ch;

        unlink("server_socket");
        server_sockfd=socket(AF_UNIX,SOCK_STREAM,0);

        server_address.sun_family=AF_UNIX;
        strcpy(server_address.sun_path,"server_socket");
        server_len=sizeof(server_address);
        bind(server_sockfd,(struct sockaddr *)&server_address,server_len);
listen(server_sockfd,5);
        while(1)
        { printf("server waiting\n");
                client_len=sizeof(client_address);
                client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,(socklen_t *)&client_len);

                read(client_sockfd,&ch,1);
                ch++;
                write(client_sockfd,&ch,1);
                close(client_sockfd);
        }
}
--------------------------------------------------------
when i run server in the background i get
server waiting

after this when i run client i get
oops:client:Success
[1]+ Broken pipe ./server

i am not being able to figure the error...plz help



franford December 17th, 2011 12:42 PM

Help!
 
Hi Octavius, did you manage to resolve this and if so, how? Thanks, Frank




Quote:

Originally Posted by octavius (Post 54988)
i am new to socket programming...when i was trying the code given in the book for client-server model using socket programming, i faced a broken pipe error in the server program

--------------client.c-------------------
#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<sys/un.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{ int sockfd;
        int len;
        struct sockaddr_un address;
        int result;
        char ch='A';

        sockfd=socket(AF_UNIX,SOCK_STREAM,0);

        address.sun_family=AF_UNIX;
        strcpy(address.sun_path,"server_socket");
        len=sizeof(address);

        result=connect(sockfd,(struct sockaddr *)&address,len);
        if(result=-1)
        { perror("oops:client");
                exit(1);
        }

        write(sockfd,&ch,1);
        read(sockfd,&ch,1);
        printf("char from server=%c\n",ch);
        close(sockfd);
        exit(0);
}
--------------server.c-----------------
#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<sys/un.h>
#include<unistd.h>

int main()
{
        int server_sockfd,client_sockfd;
        int server_len,client_len;
        struct sockaddr_un server_address;
        struct sockaddr_un client_address;
        char ch;

        unlink("server_socket");
        server_sockfd=socket(AF_UNIX,SOCK_STREAM,0);

        server_address.sun_family=AF_UNIX;
        strcpy(server_address.sun_path,"server_socket");
        server_len=sizeof(server_address);
        bind(server_sockfd,(struct sockaddr *)&server_address,server_len);
listen(server_sockfd,5);
        while(1)
        { printf("server waiting\n");
                client_len=sizeof(client_address);
                client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,(socklen_t *)&client_len);

                read(client_sockfd,&ch,1);
                ch++;
                write(client_sockfd,&ch,1);
                close(client_sockfd);
        }
}
--------------------------------------------------------
when i run server in the background i get
server waiting

after this when i run client i get
oops:client:Success
[1]+ Broken pipe ./server

i am not being able to figure the error...plz help



All times are GMT -4. The time now is 07:00 PM.

Powered by vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
2013 John Wiley & Sons, Inc.