Hello,
I'm devloping Native App in Gear S3 and using socket to transfer file to Server.
But, some problem happend. When i use recv() function, the process has closed.
and this is my log message.
my code is like this.
static void send_audio(appdata_s *data){ appdata_s *ad = data; FILE *fp; struct sockaddr_in address; char buf[1024]; char buff_audio[1024]; char buff_rcv[1024]; unsigned int file_size; int sendBytes; fp = fopen(ad->file_path,"rb"); if(fp == NULL) { dlog_print(DLOG_ERROR,"USR_TAG","FILE Pointer ERROR"); } fseek(fp, 0L, SEEK_END); file_size = ftell(fp); fseek(fp, 0L, SEEK_SET); int SendNum = file_size/sizeof(buff_audio)+1; dlog_print(DLOG_INFO,"USR_TAG","file Size: %d",file_size); memset(&address,0,sizeof(address)); address.sin_family = AF_INET; address.sin_addr.s_addr = 274187880; address.sin_port = htons(8001); int sockfd = socket(AF_INET, SOCK_STREAM, 0); if(sockfd == -1) { dlog_print(DLOG_INFO,"USR_TAG","socket create fail"); return; } if(connect(sockfd, (struct sockaddr*)&address, sizeof(address)) == -1){ dlog_print(DLOG_INFO,"USR_TAG","socket connection fail"); return; } //send Start Message if(send(sockfd,"TIZEN\n",6,MSG_NOSIGNAL)<=0){ dlog_print(DLOG_INFO,"USR_TAG","write 1 error"); } //file send /* while((sendBytes = fread(buff_audio,sizeof(char),sizeof(buff_audio),fp))>0){ send(sockfd,buff_audio,sendBytes,0); dlog_print(DLOG_INFO,"USR_TAG","sendBytes:%d",sendBytes); }*/ memset(buff_rcv, 0x00, 1024); if(recv(sockfd,buff_rcv,sizeof(buff_rcv),MSG_NOSIGNAL)==-1){ dlog_print(DLOG_INFO,"USR_TAG","read 1 error"); } dlog_print(DLOG_INFO,"USR_TAG","recv:%s",buff_rcv); close(sockfd); }
When i delete the recv() function, the process is not closed.
I don't know why the recv function is not working and kill the process.
Plus, I upload my Server's python code's some part.
elif (data == "TIZEN") | (data == "TIZEN\n"): wave_output_filename = ("%s" % (addr,)) f=open(wave_output_filename+'.wav', 'wb') print ("start form tizen...") data = sock.recv(BUFSIZE) print "filesize:%s" %data """ while (True): data = sock.recv(BUFSIZE) if (data == "END") | (data == "END\n"): print 'END' break else: f.write(data) print ('receive data, size: %s' % (len(data),)) """ sock.send('ACK: TIZEN') print 'ACK: TIZEN' f.close()
When i start the Server code and Tizen code, the server console print "start from tizen.." and "ACK:TIZEN" correctly but the TIZEN code not receive the ACK and process dead...
Why this error occur? Using socket in tizen is not working?
I already added a privilege for internet..
Please help me, Thanks in advance.