Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

simply web server by unix c program

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/wait.h>
#define QLEN 20
#define APPLY_HEAD "HTTP/1.1 200 OK\r\nContent-Type: "
#define IMG "image/jpg"
#define TEXT "text/html"
#define APPLY_END "\r\n\r\n"
typedef struct
{
in_port_t port;
char root[1024];
} cnf_t;
void err_sys (char *str) { perror (str); exit (1); }
cnf_t * config (cnf_t * arg)
{
FILE *fp;
char buf[1024];
char *p;
static cnf_t backup;
if (NULL == arg)
arg = &backup;
fp = fopen ("config.ini", "r");
if (fp == NULL)
err_sys ("fail to fopen");
fgets (buf, 1024, fp);
p = strstr (buf, "=");
arg->port = atoi (p + 1);
fgets (buf, 1024, fp);
p = strstr (buf, "=");
strcpy (arg->root, p + 1);
arg->root[strlen (arg->root) - 1] = '\0';
fclose (fp);
return arg;
}
int socket_init (in_port_t port)
{
int lfd, n;
struct sockaddr_in serv_addr;
lfd = socket (AF_INET, SOCK_STREAM, 0);
if (lfd == -1)
err_sys ("fail to socket");
bzero (&serv_addr, sizeof (serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons (port);
inet_pton (AF_INET, "192.168.0.18", &serv_addr.sin_addr.s_addr);
n = bind (lfd, (struct sockaddr *) &serv_addr, sizeof (serv_addr));
if (n == -1)
err_sys ("fail to bind");
n = listen (lfd, QLEN);
if (n == -1)
err_sys ("fail to listen");
return lfd;
}
char *get_path(int cfd, const char *root)
{
char *path; int n;
char *p, *q, *filename;
char buf[1024];
path = (char *)malloc(sizeof(char) * 1024); //or static char path[1024];
if (NULL == path) err_sys("fail to malloc ");
n = read (cfd, buf, 1024);
buf[n]


Ïà¹ØÎĵµ£º

dm642 cÔËÐпâµÄmalloc·ÖÎö

cÔËÐпâmalloc·ÖÅäµÄÄÚ´æÔÚÄÄÀïÄØ£¬Ê×ÏÈÉÏ´úÂ룺
//ÄÚ´æ´óСÁ¬½ÓÆ÷½«ÆäµØÖ·Ö¸Ïò-heapÑ¡Ïî
extern _DATA_ACCESS int _SYSMEM_SIZE;
//ÄÚ´æÇøÓò
#pragma DATA_SECTION(_sys_memory, ".sysmem")
far PACKET _sys_memory[1] = { ((size_t)&_SYSMEM_SIZE) - sizeof(PACKET), 0 };
    
   ......

LINUXϽøÐÐCÓïÑÔ±à³Ì

Ô´³ÌÐò±àÒë  

MakefileµÄ±àд  

³ÌÐò¿âµÄÁ´½Ó  

³ÌÐòµÄµ÷ÊÔ  

Í·ÎļþºÍϵͳÇóÖú  


1.Ô´³ÌÐòµÄ±àÒë  

ÔÚLinuxÏÂÃæ,Èç¹ûÒª±àÒëÒ»¸öCÓïÑÔÔ´³ÌÐò,ÎÒÃÇҪʹÓÃGNUµÄgcc±àÒëÆ÷.   ÏÂÃæÎÒÃÇÒÔÒ»¸öʵÀýÀ´ËµÃ÷ÈçºÎʹÓÃgcc±àÒëÆ÷.  
......

LINUXÏÂI2C×ÜÏßÊÊÅäÆ÷³õʼ»¯µ÷ÓÃÁ´

ÒÔ i2c-mpc.c Çý¶¯Ä£¿éΪÀý
fsl_i2c_init -> of_register_platform_driver -> of_register_driver -> driver_register -> bus_add_driver -> driver_attach
-> bus_for_each_dev -> __driver_attach -> driver_probe_device -> really_probe -> drv->probe(dev); ......

c±àÒë¹ý³Ì

±àÒëµÄ¸ÅÄ±àÒë³ÌÐò¶ÁȡԴ³ÌÐò£¨×Ö·ûÁ÷£©£¬¶ÔÖ®½øÐдʷ¨ºÍÓï·¨µÄ·ÖÎö£¬½«¸ß¼¶ÓïÑÔÖ¸Áîת»»Îª¹¦ÄܵÈЧµÄ»ã±à´úÂ룬ÔÙÓÉ»ã±à³ÌÐòת»»Îª»úÆ÷ÓïÑÔ£¬²¢ÇÒ°´ÕÕ²Ù×÷ϵͳ¶Ô¿ÉÖ´ÐÐÎļþ¸ñʽµÄÒªÇóÁ´½ÓÉú³É¿ÉÖ´ÐгÌÐò¡£
    ±àÒëµÄÍêÕû¹ý³Ì£ºCÔ´³ÌÐò£­£­>Ô¤±àÒë´¦Àí(.c)£­£­>±àÒë¡¢ÓÅ»¯³ÌÐò£¨.s¡¢.asm£©£­£­>»ã± ......

C treeviewÖнڵãÕ¹¿ªÎÊÌâ

ÎÒ´ÓÊý¾Ý¿â¶¯Ì¬¶ÁÈ¡2¸ö¸¸½Úµã£º
111
       a
            a1
       b
            b1
       c
&n ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ