クライアントとサーバーがあるプログラムを実行しています。クライアントが行うことは、「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;
}