0

我正在做一个有客户端和服务器的程序。客户端所做的是通过发送包含“ping”的消息来“ping”服务器。当服务器收到“ping”时,它应该发回一个“got_it”。

我已经能够发送'ping',它已经被服务器接收并发送回'got_it',但我的客户端无法接收它。

我需要制作两个插座才能做到这一点吗?这是我的客户的代码。

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