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);
}
Example #4
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);
}
Example #5
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);
}
Example #6
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);
  }
}