Hallo, ich verstehe diese Zeile nicht, durch das %16 denkt man
:wieso i%16 rest 15 oder length-1 und dann das mit der j for schleife kann das wer villt versträndlicher erklärenCode:if(((i%16)==15) || (i == length-1)) { for ( j = 0; j < length; j++)
Hier mal der ganze Code:
simple_server.h
hacking.h :Code:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include "hacking.h" #define PORT 7790 int main(void) { int sockfd, new_sockfd; struct sockaddr_in host_addr, client_addr; int recv_length=1, yes=1; socklen_t sin_size; char buffer[1024]; if((sockfd=(PF_INET, SOCK_STREAM, 0))==-1) perror("in socket"); if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int))==-1) perror("in setting options"); host_addr.sin_family = AF_INET; host_addr.sin_port = htons(PORT); host_addr.sin_addr.s_addr = 0; memset(&(host_addr.sin_zero), '0', 8); if(bind(sockfd, (struct sockaddr *)&host_addr, sizeof(struct sockaddr))==-1) perror("in binding"); if(listen(sockfd, 5)==-1) perror("in listening on socket"); while(1){ sin_size = sizeof(struct sockaddr_in); new_sockfd = accept(sockfd, (struct sockaddr *) &client_addr, &sin_size); if(new_sockfd == -1) perror("accepting connection"); printf("server got connection from %s prot %d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port)); send(new_sockfd, "Hello, world!\n", 13,0); recv_length = recv(new_sockfd,&buffer,1024,0); while (recv_length > 0) { printf( "RECV: %d bytes\n", recv_length ); dump(buffer, recv_length); recv_length = recv(new_sockfd, &buffer, 1024, 0); } close(new_sockfd); } return 0; }
Code:void dump(const unsigned char *data_buffer, const unsigned int length) { unsigned char byte; unsigned int i,j; for ( i = 0; i < length; i++) { byte = data_buffer[i]; printf( "%02x ", data_buffer[i]); if(((i%16)==15) || (i == length-1)) { for ( j = 0; j < length; j++) printf (" "); printf( "| " ); for ( j =(i-(i%16)); j <= i; j++) { byte = data_buffer[j]; if((byte > 31) && (byte < 127)) printf( "%c", byte ); else printf( "." ); } printf( "\n" ); } } }



LinkBack URL
About LinkBacks


