View Single Post
  #2 (permalink)  
Old December 17th, 2011, 01:42 PM
franford franford is offline
Registered User
Points: 3, Level: 1
Points: 3, Level: 1 Points: 3, Level: 1 Points: 3, Level: 1
Activity: 0%
Activity: 0% Activity: 0% Activity: 0%
 
Join Date: Dec 2011
Posts: 1
Thanks: 0
Thanked 0 Times in 0 Posts
Default Help!

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




Quote:
Originally Posted by octavius View Post
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