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 |