Server #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #define PORT 8000 #define MAX_N 20 void check_matrix_type(int n, int mat[MAX_N][MAX_N], char *result){ int is_diagonal = 1; int is_upper = 1; int is_lower = 1; for(int i = 0; i<n; i++){ for(int j =0; j<n;j++){ if(i>j && mat[i][j]!=0){ is_upper = 0; } if(i<j && mat[i][j]!=0){ is_lower = 0; } if(i!=j && mat[i][j]!=0){ is_diagonal = 0; } } } if(is_diagonal){ strcpy(result,"Diagonal matrix") } else if(is_upper){ strcpy(result,"Upper matrix")} else if(is_lower){ strcpy(result,"Lower matrix")} else{ strcpy(result,"Regular matrix"); } } int main(){ int server_fd,new_socket; struct sockaddr_in address; int addrlen = sizeof(address); if((server_fd=socket(AF_INET,SOCK_STREAM,0))==0){ perror("Socket creation failed"); exit(EXIT_FAILURE); } address.sin_family=AF_INET; address.sin_port=htons(port); address.sin_addr.s_addr=INADDR_ANY; if(bind(server_fd(struct sockaddr *),&address,sizeof(address))<0){ perror("Bind failed"); close(server_fd); exit(EXIT_FAILURE); } if(listen(server_fd,3)<0){ perror("Listen failed"); close(server_fd); exit(EXIT_FAILURE); } printf("Server is listening",PORT); if((new_socket =accept(server_fd, (struct sockaddr*)&address, (socklen_t *)&addrlen))<0){ perror("Accept failed"); close(server_fd); exit(EXIT_FAILURE); } int n; read(new_socket, &n,sizeof(n)); int mat[MAX_N][MAX_N]; read(new_socket, mat,sizeof(mat)); printf("Recieved matrix from client", n,n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ printfd("%d",mat[i][j]); } printf("\n"); } char matrix_type[100]; check_matrix_type(n,mat,matrix_type); send(new_socket,matrix_type,strlen(matrix_type)+1,0); printf("Matrix type sent to client:%s",matrix_type); close(new_socket); close(server_fd); return 0; } CLIENT #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<string.h> #include<arpa/inet.h> #include<time.h> #define PORT 8080 #define MAX_N 20 int main(){ int sock = 0; struct sockaddr_in serv_addr; int n,choice; printf("Enter the order of square matrix:",MAX_N); if(scanf("%d",&n)!=1||n<=0||n>MAX_N); printf("Invalid input for N"); return -1; } int mat[MAX_N][MAX_N]; memset(mat,0,sizeof(mat)); srand(time[0]); printf("Enter the choice:1.User input 2.Random input"); if(choice==1){ printf("Enter the matrix elements"); for (int i=0;i<n;i++){ for(int j=0;j<n;j++){ scanf("%d",&mat[i][j]); } } } else{ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ mat[i][j]=rand()%50+1; } } } printf("Generated matrix",n,n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ printf("%d",mat[i][j]); } printf("\n"); } if((sock=socket(AF_INET,SOCK_STREAM,0))<0){ printf("Socket creation error"); return -1; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); if(connect(sock,(struct sockaddr *)&serv_addr, sizeof(serv_addr))<0){ perror("Connection failed"); return -1; } send(sock, &n, sizeof(n),0); send(sock, mat,sizeof(mat),0); char buffer[100] = 0; read(sock,buffer,sizeof(buffer)); printf("[Server response] Matrix type:%s, buffer"); close(sock); return 0; }
Note.ms
/cnm