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