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