This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Can' t send Data as a client after i received data as a server

Hi,

I am running a socket server to recieve data from my smart phone. To send data to my smart phone i would like to establishe a client connetion, because i would like to have an asyncronous mode for sending and recievieng data.

here is what a am doing so far.

wlan_connect( WLAN_SEC_WPA2,ssid, 4,0x00,wpaKey,8);
    while ((ulCC3000DHCP == 0) || (ulCC3000Connected == 0))
    {
        hci_unsolicited_event_handler();
        _delay_us(50);
    }
    unsigned long aucDHCP       = 14400;
    unsigned long aucARP        = 3600;
    unsigned long aucKeepalive  = 30;
    unsigned long aucInactivity = 20;
    netapp_timeout_values(&aucDHCP, &aucARP, &aucKeepalive, &aucInactivity);
    socketfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    bind(socketfd, &socketAddress,sizeof(socketAddress));
    listen(socketfd,0x00);
    
    
    
    while(1)
    {
            if(cc3000State.bits.lostHeartbeat){
                cc3000State.bits.lostHeartbeat=0;
                long err=0;
                serverFd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
                FD_SET(serverFd, &writesds);
                maxFD=serverFd + 1;
                ret=select(maxFD,0x00,&writesds,0x00,&timeout);
                if(ret>0){
                    err=connect(serverFd,&clientAddr,clilen);
                    if(err>=0){
                        send(serverFd, "HALLO", 5,0);
                    }
                    if(err<0){
                        
                    }
                    closesocket(serverFd);                    
                }
                if(ret<=0){
                    
                }                    
            }
            if(!cc3000State.bits.serverIsConnected){
                clientfd=accept(socketfd,(sockaddr *)&clientAddr,&clilen);
                if(clientfd>=0 && !cc3000State.bits.serverIsConnected){
                    cc3000State.bits.serverIsConnected=1;
                }
            }                
            if(clientfd==-1){
                
            }            
        if(cc3000State.bits.serverIsConnected && !cc3000State.bits.error){
            int tmp=0;
            FD_SET(clientfd, &readsds);
            maxFD=clientfd + 1;
            memset(RxBuffer,0x00,sizeof(RxBuffer));
            ret=select(maxFD,&readsds,0x00,0x00,&timeout);
            PORTC|=(1<<PC2);
            if(FD_ISSET(clientfd, &readsds)){
                tmp=recv(clientfd, RxBuffer, sizeof(RxBuffer),0);
                if(tmp>0){
            
                }
                if(tmp<0){
                    closesocket(clientfd);
                    cc3000State.bits.serverIsConnected=1;
                    cc3000State.bits.error=1;
                    cc3000State.bits.lostHeartbeat=1;
                }
                if(tmp==0){
                        //
                }
            }
            if(ret<=0)
                {
                    closesocket(clientfd);
                    closesocket(socketfd);
                    cc3000State.bits.serverIsConnected=1;
                    cc3000State.bits.error=1;
                    cc3000State.bits.lostHeartbeat=1;
                }            
        }
        if( (ulCC3000DHCP == 1) && (ulCC3000Connected == 1))
        {
                
            
        }
    }

Recieveing data from my phone works, but after the timeout of select() hits (ret = -1). It should send HALLO to my phone. Butit didn't send anything. If i  just use my sending routine, my phone will recieve HALLO.

regrads

Florian