int main( void ) { Node* List = NULL; int select=-1; DataAllDelete(&List); LoadingData(&List); do { select=PrintMenu(&List); switch(select) { case 1: DataAdd(&List); break; case 2: DataEdit(&List); break; case 3: DataDelete(&List); break; case 4: DataSearch(&List); break; case 5: DataPrint(&List); break; case 6: DataAllPrint(&List); break; case 7: SavingData(&List); break; case 8: DataAllDelete(&List); LoadingData(&List); break; case 9: printf(" 프로그램을 종료합니다.\n"); printf("\n"); break; default: break; } }while(select !=9); return 0; }
//recieve func int RecvData(int acc){ DB(fprintf(stderr,"RecvData()\n")); int len; int i; for(i=0;i<RecvBuf.size;i++){ RecvBuf.buf[i] = '\0'; } //len=recv(acc,RecvBuf.buf,(sizeof(char) * RecvBuf.size),0); len=read(acc,RecvBuf.buf,(sizeof(char) * RecvBuf.size)); RecvBuf.len = len; DB(fprintf(stderr,"recv %d byte {",len)); DB(DataPrint(stderr,RecvBuf.buf,len)); DB(fprintf(stderr,"}\n")); return(0); }
//recieve func int RecvData(int acc, DATA_BUF *_RecvBuf){ DB(fprintf(stderr,"RecvData()\n")); int len; int i; for(i=0;i<_RecvBuf->size;i++){ _RecvBuf->buf[i] = '\0'; } len=recv(acc,_RecvBuf->buf,(sizeof(char) * _RecvBuf->size),0); _RecvBuf->len = len; DB(fprintf(stderr,"recv %d byte {",len)); DB(DataPrint(stderr,_RecvBuf->buf,len)); DB(fprintf(stderr,"}\n")); if(len==0){ return(1); } return(0); }
//send func int SendData(int acc, DATA_BUF *_SendBuf){ int len=-2; int buf_start=0; DB(fprintf(stderr,"SendData()\n")); while(_SendBuf->len > 0){ len=send(acc,_SendBuf->buf+buf_start,_SendBuf->len,0); buf_start = buf_start + len; _SendBuf->len = _SendBuf->len - len; } DB(fprintf(stderr,"send %d byte {",len)); DB(DataPrint(stderr,_SendBuf->buf,len)); DB(fprintf(stderr,"}\n")); free(_SendBuf->buf); _SendBuf->buf=NULL; _SendBuf->size=0; _SendBuf->len=0; return(0); }
//recieve func int RecvData(int acc){ //char buf[LONG_BUFF_SIZE]; //char buf[8]; DB(fprintf(stderr,"RecvData()\n")); int len; int i; for(i=0;i<RecvBuf.size;i++){ RecvBuf.buf[i] = '\0'; } //len=recv(acc,buf,sizeof(buf),0); len=recv(acc,RecvBuf.buf,(sizeof(char) * RecvBuf.size),0); RecvBuf.len = len; DB(fprintf(stderr,"recv %d byte {",len)); DB(DataPrint(stderr,RecvBuf.buf,len)); DB(fprintf(stderr,"}\n")); /* if(len == 0||strncmp(RecvBuf.buf,"end;",4) == 0){ return(1); } */ return(0); }
int main(int argc, char *argv[]) { if (argc < 2) { fprintf(stderr,"ERROR, no port provided\n"); exit(1); } int PORT = atoi(argv[1]); char *recvBuff; /* recv data buffer */ int numBytes = 0; int senderBuffSize; // char str[MAX_DATA_SIZE]; char *str; int servSockfd, clntSockfd; struct sockaddr_in sevrAddr; struct sockaddr_in clntAddr; int clntLen; socklen_t optlen = sizeof senderBuffSize; /* make socket */ if ((servSockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("sock failed"); exit(1); } /* set IP address and port */ sevrAddr.sin_family = AF_INET; sevrAddr.sin_port = htons(PORT); sevrAddr.sin_addr.s_addr = INADDR_ANY; bzero(&(sevrAddr.sin_zero), 8); if (bind(servSockfd, (struct sockaddr *)&sevrAddr, sizeof(struct sockaddr)) == -1) { perror("bind failed"); exit(1); } if (listen(servSockfd, MAX_PENDING) == -1) { perror("listen failed"); exit(1); } while(1) { clntLen = sizeof(struct sockaddr_in); if ((clntSockfd = accept(servSockfd, (struct sockaddr *) &clntAddr, &clntLen)) == -1) { perror("accept failed"); exit(1); } printf("Connected from %s\n", inet_ntoa(clntAddr.sin_addr)); if (send(clntSockfd, "Connected!!!\n", strlen("Connected!!!\n"), 0) == -1) { perror("send failed"); close(clntSockfd); exit(1); } /* repeat for one clinet service */ while(1) { /* recv data from the client */ getsockopt(clntSockfd, SOL_SOCKET,SO_SNDBUF, &senderBuffSize, &optlen); /* check sender buffer size */ printf("optlen: %d", optlen); recvBuff = malloc(senderBuffSize * sizeof (char)); if ((numBytes = recv(clntSockfd, recvBuff, senderBuffSize, 0)) == -1) { perror("recv failed"); exit(1); } recvBuff[numBytes] = '\0'; str = malloc(senderBuffSize * sizeof(char)); strncpy(str, recvBuff, numBytes); str[numBytes] = '\0'; /* send data to the client */ if (send(clntSockfd, str, strlen(str), 0) == -1) { perror("send failed"); close(clntSockfd); exit(1); } if(DataPrint(recvBuff, str, numBytes)){ fprintf(stderr,"ERROR, no way to print out\n"); exit(1); } } close(clntSockfd); exit(1); } }