Problem transport endpoint is not connected


 
Thread Tools Search this Thread
Top Forums Programming Problem transport endpoint is not connected
# 1  
Old 01-06-2012
[SOLVED]Problem transport endpoint is not connected

i've made a simple program that change a string from lowercase to uppercase and from uppercase to lowercase. Server works until start client, after client run server give this error: "recv server fallita: Transport endpoint is not connected" why? i think that stream closed too soon or not? below there is code of server:
Code:
        #include <stdlib.h>
        #include <stdio.h>
        #include <unistd.h>
        #include <sys/types.h>
        #include <ctype.h>
        #include <sys/socket.h>
        #include <string.h>
        #include <netinet/in.h>
        #define MAXLENGTH 80
        #define SERVERPORT 1313


        void minuscolatore (int in,int out){
            char inputline[MAXLENGTH];
            int len,i;
            while((len=recv(in,inputline,MAXLENGTH,0))>0){
                for(i=0;i<len;i++){
                    inputline[i]=tolower(inputline[i]);
                }
                if (strcmp(inputline,"fine")==0){
                    break;
                }
                send(out,inputline,len,0);
            }
        }
        void maiuscolatore(int in,int out){
            char inputline[MAXLENGTH];
            int len,i;
            while((len=recv(in,inputline,MAXLENGTH,0))>0){
                for(i=0;i<len;i++){
                    inputline[i]=toupper(inputline[i]);
                }
                if (strcmp(inputline,"FINE")==0){
                    break;
                }
                send(out,inputline,len,0);
            }
        }
        int main(){
            int sock,client_len,fd;
            char c;
            struct sockaddr_in client, server = {AF_INET,htons(SERVERPORT),INADDR_ANY};
            if((sock=socket(AF_INET,SOCK_STREAM,0))==-1){
                perror("Socket fallita");
                exit(1);
            }
            if(bind(sock,(struct sockaddr *)&server,sizeof server)==-1){
                perror("Bind fallita");
                exit(2);
            }
            listen(sock,5);
            while(1){
                client_len=sizeof(client);
                if((fd=accept(sock,(struct sockaddr *)&client,&client_len))<0){
                    perror("accept fallita");
                    exit(3);
                }
                if (recv(sock,&c,1,0)==-1){
                    perror("recv server fallita");
                    exit(4);
                }
                if (c=='+'){
                switch(fork()){
                    case -1:
                        perror("Fork fallita");
                        exit(4);
                    case 0:
                        printf("Aperta connessione\n");
                        send(fd,"Benvenuto al maiuscolatore, minuscolatore\n",27,0);
                        maiuscolatore(fd,fd);
                        printf("Chiusa connessione\n");
                }
            }
                else if (c=='-'){
                switch(fork()){
                    case -1:
                        perror("Fork fallita");
                        exit(4);
                    case 0:
                        printf("Aperta connessione\n");
                        send(fd,"Benvenuto al maiuscolatore, minuscolatore\n",27,0);
                        minuscolatore(fd,fd);
                        printf("Chiusa connessione\n");
                }   
                }
            }
            close(fd);
        }

and the client:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <ctype.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#define MAXLENGTH 80
#define SERVERPORT 1313

int main(){
int sockfd;
struct sockaddr_in server={AF_INET,htons(SERVERPORT),INADDR_ANY};
int i=0, len;
char buf[MAXLENGTH],c,d;
if ((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
perror("socket fallita");
exit(1);
}
if (connect(sockfd, (struct sockaddr *) &server,sizeof server)==-1){
perror("connect fallita");
exit(2);
}
printf("\nDigita una stringa :");
while((c=getchar())!='\n' && i<MAXLENGTH)
buf[i++]=c;

buf[i]='\0';
len=strlen(buf);
printf("\nScrivi + se vuoi tutto maiuscolo e - se vuoi tutto minuscolo:");
d=getchar();
if (send(sockfd,&d,1,0)==-1){
perror("send d fallita");
exit(4);
}
printf("\nInvio la stringa al server...\n");
if(send(sockfd,buf,len,0)==-1){
perror("send fallita");
exit(4);
}
if(recv(sockfd,buf,len,0)>0){
printf("Ho ricevuto la risposta: %s\n",buf);
}
else{
perror("seconda receive fallita");
exit(3);
}
close(sockfd);
exit(0);
}

Last edited by tafazzi87; 01-06-2012 at 12:46 PM..
# 2  
Old 01-06-2012
You're reading from the wrong socket. After you do fd=accept(sock, ...) you should be reading from fd, not sock.
This User Gave Thanks to Corona688 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Solaris

Determine PCI Endpoint for a Serial Interface.

Hi Folks, Here is one for the real Solaris aficionados on the site; I have a T5240 and have to create an I/O domain with access to the serial port, in this case /dev/term/a and although I have been through the documentation I'm having some issues in identifying the device to assign. What I... (2 Replies)
Discussion started by: gull04
2 Replies

2. Solaris

getpeername: Transport endpoint is not connected

Hi Folks, I am getting the following error in /var/adm/messages. Can any one help me out on this? ZXXXXXA:/# tail /var/adm/messages Oct 26 00:13:04 ZXXXXXA ftpd: setsockopt SO_KEEPALIVE Invalid argument Oct 26 00:13:04 ZXXXXXA ftpd: setsockopt (SO_OOBINLINE): Invalid argument Oct 26... (3 Replies)
Discussion started by: vivek.goel.piet
3 Replies

3. UNIX for Dummies Questions & Answers

transport errors in iostat

Hi Unix experts, I have a question regarding a disk failure seen in "iostat -Enm" output: # iostat -Enm c1t0d0 Soft Errors: 0 Hard Errors: 7 Transport Errors: 9 Vendor: FUJITSU Product: MAU3073NCSUN72G Revision: 0802 Serial No: 0514F005M0 Size: 73.40GB <73400057856 bytes> Media... (5 Replies)
Discussion started by: dyavuzy1
5 Replies

4. Solaris

What is the difference between softerrors,harderrors,transport errors?

what is the difference between softerrors,harderrors,transport errors? (3 Replies)
Discussion started by: tv.praveenkumar
3 Replies

5. Solaris

SC3.2 issue - cluster transport configuration not right - resulting fail

I am trying to set up a two host cluster. trouble is with the cluster transport configuration. i'm using e1000g2 and g3 for the cluster transport. global0 and global1 are my two nodes, and I am running the scinstall from global1. i think i should be expecting, is this: The following... (19 Replies)
Discussion started by: frustin
19 Replies

6. Shell Programming and Scripting

grep error: range endpoint too large

Hi, my problem: gzgrep "^.\{376\}8301685001120" filename /dev/null ###ERROR ### grep: RE error 11: Range endpoint too large. Whats my mistake? Is the position 376 to large for grep??? Thanks. (2 Replies)
Discussion started by: Timmää
2 Replies

7. UNIX for Advanced & Expert Users

Transport Error

Dear Friends, I am using Solaris 10 on Sun Sparc T5120 with 4 HDD(Raid).I am getting transport error in one of my mirrored HDD c1t2d0. Below is a screen shot. I have replaced the HDD with new one but still the same. Any one can help???? c1t2d0 Soft Errors: 0 Hard Errors: 0... (1 Reply)
Discussion started by: solaris5.10
1 Replies

8. Shell Programming and Scripting

Transport to another server within a script.

I'm not sure how to phrase this... We currently have a server that we have to load a special kind of file onto, to do this we have a script that someone on my team wrote years ago called emm <file>. We recently added another server to our system, so every file that's added on one has to be added... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

9. Solaris

PLOGI failed state=Packet Transport error

Someone who can help me. the following error occur, what does it mean, and any possible solution you can give.thanks syslog: fp: NOTICE: fp(2): PLOGI to d5900 failed state=Packet Transport error , reason=No Connection (Database) $cat /var/adm/messages Nov 3 05:16:21 vfaus279 fp: ... (7 Replies)
Discussion started by: o_m_g
7 Replies
Login or Register to Ask a Question