⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 socket程序大家见多了
💻 C
字号:
#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,       /*用户态向内核态 SET一个socket 描述字*/	IOCTL_TEST_OPTION       =   0x80,       /*用来测试的IOCTL选项*/	IOCTL_SEND_UDP_PACKET   =   0x81,       /*发送一个 UDP 数据报文*/	IOCTL_WRITE_UDP_PACKET  =   0x82,       /*write 一个UDP数据报文,结果同上*/	IOCTL_SEND_TCP_PACKET   =   0x83,       /*发送TCP数据报文*/} ioctl_cmd_enum;/* *  发送数据包的数据结构 *  TCP同 调用了connect 函数的UDP只需要前面4个参数够了 *  而没有connect 的 UDP套件字描述符,需要填充后面两个参数 */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*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -