我正在做一个有客户端和服务器的程序。客户端所做的是通过发送包含“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;
}