?? test.c
字號(hào):
#ifndef AUTO_SCRIPTE#define AUTO_SCRIPTE#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <unistd.h>#include <sys/stat.h>#include <sys/select.h>#include <sys/time.h>#include <time.h>#include <sys/mman.h>#include <fcntl.h>#include <errno.h>#define DEV_PATH "/dev/test"typedef enum _IOCTL_CMD{ IOCTL_SET_SOCKET_FD = 0x7F, /*用戶態(tài)向內(nèi)核態(tài) SET一個(gè)socket 描述字*/ IOCTL_TEST_OPTION = 0x80, /*用來測(cè)試的IOCTL選項(xiàng)*/ IOCTL_SEND_UDP_PACKET = 0x81, /*發(fā)送一個(gè) UDP 數(shù)據(jù)報(bào)文*/ IOCTL_WRITE_UDP_PACKET = 0x82, /*write 一個(gè)UDP數(shù)據(jù)報(bào)文,結(jié)果同上*/ IOCTL_SEND_TCP_PACKET = 0x83, /*發(fā)送TCP數(shù)據(jù)報(bào)文*/} ioctl_cmd_enum;/* * 發(fā)送數(shù)據(jù)包的數(shù)據(jù)結(jié)構(gòu) * TCP同 調(diào)用了connect 函數(shù)的UDP只需要前面4個(gè)參數(shù)夠了 * 而沒有connect 的 UDP套件字描述符,需要填充后面兩個(gè)參數(shù) */typedef struct _SEND_PACKET_INFO_{ unsigned int fd; unsigned char *data; unsigned int len; unsigned int flags; struct sockaddr addr; unsigned int addr_len;} send_packet_info_t;send_packet_info_t send_packet_info;int sock_dev_fd = -1;int main( int argc, char *argv[] ){ int tmp_fd = -1, ret = -1; int index; int value = 0; unsigned char *tmp_text = NULL; if( argc == 2 ) value = atoi( argv[1] ); sock_dev_fd = open( DEV_PATH, O_RDWR ); if( 0 > sock_dev_fd ) { fprintf( stderr, "Open %s failed: %s\n", DEV_PATH, strerror( errno ) ); return -1; } tmp_text = ( unsigned char* )mmap( 0, 1024, PROT_READ | PROT_WRITE, MAP_SHARED, sock_dev_fd, 0 ); if( MAP_FAILED == tmp_text ) { fprintf( stderr, "mmap failed: %s.\n", strerror( errno ) ); goto out; } //tmp_text[3] = 'z'; //tmp_text[4] = 'y'; for( index=0; index < 20; index++ ) printf( "%2x \n", tmp_text[index] ); munmap( tmp_text, 0 ); ioctl( sock_dev_fd, 0x44, NULL );out: close( sock_dev_fd ); return 0;}#endif /*#ifdef AUTO_SCRIPTE*/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -