0

クライアントとサーバーがあるプログラムを実行しています。クライアントが行うことは、「ping」を含むメッセージを送信してサーバーに「ping」することです。サーバーが「ping」を取得すると、「got_it」を返信する必要があります。

私はすでに「ping」を送信できます。サーバーはすでに受信しており、「got_it」を送り返していますが、クライアントはそれを受信できませんでした。

これを行うには 2 つのソケットを作成する必要がありますか? これが私のクライアントのコードです。

int main(int argc, char **argv)
{
  int sockfd;
  struct sockaddr_in servaddr;
  socklen_t len = sizeof(servaddr);
  char mesg[1024];
  char mesg2[1024];
  char cli_ip[32];

  if(argc!=2){ 
    printf("Usage: %s <ip_addr>\n",argv[0]);
    return -EINVAL; 
  }

  sockfd = socket(PF_INET,SOCK_STREAM,0);
  if(sockfd<0) {
    perror("socket: ");
    return -EIO;
  }

  bzero(&servaddr, sizeof(servaddr));
  servaddr.sin_family = AF_INET;
  servaddr.sin_port = htons(54321);
  inet_pton(AF_INET,argv[1],&servaddr.sin_addr);

  if(connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr))<0){
    perror("connect: ");
    close(sockfd);
    return -EIO;


  }

  while(1){
        memset(mesg2,0,sizeof(mesg2));
    if(recv(sockfd,mesg2,sizeof(mesg2),0) > 0 ){
        puts(mesg2);
    }
    fgets(mesg,sizeof(mesg),stdin);
    send(sockfd,mesg,strlen(mesg),0);



  }
  close(sockfd);
  return 0;
}
4

0 に答える 0