跳至主要内容

博文

c get uri from html request

char * getUri( char data[]){ char uri[ 1024 ]; int flag= 0 ; for ( int i= 0 ;i<strlen(data);i++){ if (flag== 0 &&data[i]== ' ' ){ flag= 1 ; continue ; } else if (flag> 0 &&data[i]!= ' ' ){ uri[flag- 1 ]=data[i]; flag++; } else if (flag> 0 &&data[i]== ' ' ){ break ; } } uri[flag- 1 ]= '\0' ; char * myuri=uri; return myuri; }

c send html reponse

char * sendHTML( char data[]){ char str[ 1024 ] = "HTTP/1.0 200 OK\r\nContent-length:" ; char str_int[ 10 ]; sprintf(str_int, "%d" ,strlen(data)); strcat(str,str_int); strcat(str, "\r\n\r\n" ); strcat(str,data); strcat(str, "\r\n\r\n" ); char * cs=str; return cs; }

gcc编译时指定.h文件位置的方法 compile library head

使用gcc的 -I 后缀可以指定用户编程中使用的.h文件的目录,从而方便编译 例: 假设用户的test.c文件在当前目录 然而test.c文件中所包含的test.h文件处在不同目录(/home/usr/myh) 这种情况下我们可以既可以使用-I后缀在编译时指定所需.h文件的位置,具体如下: gcc test.c -o test -I /home/usr/myh 如此,即生成了可执行文件test

c socket programming ( http server )

服务器端代码 server.cpp: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #include <netinet/in.h> int main(){ //创建套接字 int serv_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //将套接字和IP、端口绑定 struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); //每个字节都用0填充 serv_addr.sin_family = AF_INET; //使用IPv4地址 serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //具体的IP地址 serv_addr.sin_port = htons(8888); //端口 bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); //进入监听状态,等待用户发起请求 listen(serv_sock, 20); //接收客户端请求 struct sockaddr_in clnt_addr; socklen_t clnt_addr_size = sizeof(clnt_addr); int clnt_sock; while(1){ printf("accepting ...\n"); clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size); //向客户端发送数据 ...