客户端读取一个数字,将其发送到找到其除数的服务器,然后服务器将divisosr发送回打印它们的客户端。
int main(){
int s;
struct sockaddr_in server,client;
int l, conn;
s = socket (AF_INET, SOCK_STREAM, 0);
if (s < 0){
printf("Error on creating the server.");
return 1;
}
memset(&server, 0, sizeof(server));
server.sin_port = htons(1234);
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
if (bind(s,(struct sockaddr *) &server, sizeof(server)) < 0){
printf("Eroare la bind.");
return 1;
}
listen(s,5);
l = sizeof(client);
memset(&client, 0, sizeof(client));
while (1){
uint16_t n, array[10], arraytosend[10];
conn = accept(s,(struct sockaddr *) &client,&l);
recv(conn, &n, sizeof(n), MSG_WAITALL);
n = ntohs(n);
int d, i=0;
for (d=2; d<=n/2; d++){
if ( n % d == 0){
arraytosend[i] = htonl(array[d]) ;
i++;
}
}
send (conn, &array, sizeof(array), 0);
close(conn);
}
}
客户端:
int main(){
uint16_t n, array[10], arrayrec[10];
struct sockaddr_in server;
int c;
c = socket(AF_INET, SOCK_STREAM, 0);
if (c < 0){
printf("Eroare la creare socket client.");
return 1;
}
memset(&server, 0, sizeof(server));
server.sin_port = htons(1234);
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
if (connect(c, (struct sockaddr *) &server, sizeof(server))< 0){
printf("Eroare la conectare.");
return 1;
}
printf("Give a number: ");
scanf("%hu", &n);
n = htons(n);
send(c,&n, sizeof(n),0);
recv(c, &array, sizeof(array), MSG_WAITALL);
int p=0;
p = htons(p);
for (p=0; p<10; p++){
array[p] = ntohl(arrayrec[p]);
printf("%hu", array[p]);
}
close(c);
}
当我运行服务器,然后是客户端时,它会打印:0000000000
有人可以帮帮我吗?