在UDP协议下,编写服务器程序listen.c和客户端程序talk.c,当服务器接收到以字母N开头的字符串时,提取出N后面的整数,并判断该整数是不是一个幸运素数(4位以上的素数,并且只有一位数字和其他位不同),将判断结果返回给客户端。例如,若客户端发送N4321,则服务器端应答No;若发送N9999991,则服务器端应答YES。
Server2.c代码:
#include <sys/socket.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include<arpa/inet.h>
int sockfd;
int prime(int x) {
int i;
for (i = 2; i < x; i++) {
if (x%i == 0)
return 1;
}
return 0;
}
void sig_handler(int signo)
{
if (signo == SIGINT)
{
printf("server close\n");
close(sockfd);
exit(1);
}
}
void out_addr(struct sockaddr_in * clientaddr)
{
char ip[16];
int port;
memset(ip, 0, sizeof(ip));
inet_ntop(AF_INET, &clientaddr->sin_addr.s_addr, ip, sizeof(ip));
port = ntohs(clientaddr->sin_port);
printf("client: %s(%d)\n", ip, port);
}
void do_service()
{
struct sockaddr_in clientaddr;
socklen_t len = sizeof(clientaddr);
char buffer[1024];
memset(buffer, 0, sizeof(buffer));
//接收客户端的数据报文
if (recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr*)&