genericopenlibs/openenvcore/libc/test/testsocket/src/tsocketblocks.cpp
branchRCL_3
changeset 75 254b651f304e
parent 64 c44f36bb61a3
equal deleted inserted replaced
64:c44f36bb61a3 75:254b651f304e
  5202         ret = threadRetVal;
  5202         ret = threadRetVal;
  5203         }
  5203         }
  5204     return ret; 
  5204     return ret; 
  5205     }
  5205     }
  5206 
  5206 
  5207 
       
  5208 void* createNwrite_socket(TAny* aParam)
       
  5209     {
       
  5210     sockaddr_in serv_addr;
       
  5211         int err1;
       
  5212         int ret = 0;
       
  5213         char *msg ="testing socket send";
       
  5214         int sock_fd;
       
  5215         serv_addr.sin_family = AF_INET;
       
  5216         serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
       
  5217         serv_addr.sin_port = (int)aParam;
       
  5218         sock_fd = socket(AF_INET,SOCK_STREAM,0);
       
  5219         if (sock_fd < 0)
       
  5220             {
       
  5221             ret = -1;
       
  5222             goto close;
       
  5223             }
       
  5224         if (connect(sock_fd,(sockaddr*)&serv_addr,sizeof(serv_addr)) < 0)
       
  5225             {
       
  5226             ret = -1;
       
  5227             goto close;
       
  5228             }
       
  5229         sleep(5);  
       
  5230         err1 = write(sock_fd, msg, strlen(msg)+1);
       
  5231         if(err1 < 0)
       
  5232             {
       
  5233             ret = -1;
       
  5234             goto close;    
       
  5235             }
       
  5236         sleep(5);
       
  5237         err1 = write(sock_fd, msg,strlen(msg)+1);
       
  5238         if(err1 ==  -1 )
       
  5239            {
       
  5240             printf("write() failed returned errno = %d", errno);
       
  5241            }
       
  5242         else
       
  5243             {
       
  5244             ret = -1;
       
  5245             }
       
  5246         close:
       
  5247         close(sock_fd);
       
  5248         return (void*)ret;
       
  5249 
       
  5250     }
       
  5251 TInt CTestSocket::SockWriteOnClosedConn()
       
  5252     {
       
  5253     
       
  5254         int sock_fd,newsock_fd;
       
  5255         unsigned int addr_len;  
       
  5256         sockaddr_in serv_addr,new_socket;
       
  5257         TInt ret = KErrNone;
       
  5258         int threadRetVal = 0;
       
  5259         void *threadRetValPtr = (void*)&threadRetVal;
       
  5260         sock_fd = socket(AF_INET,SOCK_STREAM,0);
       
  5261         if (sock_fd < 0)
       
  5262             {
       
  5263             return KErrSocket;
       
  5264             }
       
  5265         serv_addr.sin_family = AF_INET;
       
  5266         serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
       
  5267         serv_addr.sin_port = htons(12350);
       
  5268         pthread_t clientThread;
       
  5269         if (bind(sock_fd,(sockaddr*)&serv_addr,sizeof(serv_addr)) < 0)
       
  5270             {
       
  5271             INFO_PRINTF2(_L("bind return with errno = %d"), errno);
       
  5272             return  KErrBind;
       
  5273             }
       
  5274         if(-1 == listen(sock_fd, 1))
       
  5275            {
       
  5276              printf("error listen failed");
       
  5277              close(sock_fd);
       
  5278              return  -1;
       
  5279            }
       
  5280         pthread_create(&clientThread, NULL, &createNwrite_socket, (void*)(serv_addr.sin_port));
       
  5281            addr_len = sizeof(new_socket);
       
  5282            newsock_fd = accept(sock_fd,(sockaddr*)&new_socket,&addr_len);  
       
  5283            if (errno != 0 )
       
  5284                {
       
  5285                INFO_PRINTF2(_L("Accept return with errno = %d"), errno);
       
  5286                ret = -1;
       
  5287                }
       
  5288           
       
  5289            close(newsock_fd);
       
  5290            close(sock_fd);
       
  5291            pthread_join(clientThread, &threadRetValPtr );
       
  5292            if (threadRetVal < 0)
       
  5293                {  
       
  5294                INFO_PRINTF1(_L("SockWriteOnClosedConn failed"));
       
  5295                ret = threadRetVal;
       
  5296                }
       
  5297            return ret;
       
  5298     }
       
  5299 
       
  5300 
       
  5301 // ========================== OTHER EXPORTED FUNCTIONS =========================
  5207 // ========================== OTHER EXPORTED FUNCTIONS =========================
  5302 // None
  5208 // None
  5303 
  5209 
  5304 //  End of File
  5210 //  End of File
  5305 
  5211