這是乙個關於socket的題:要求你自己寫乙個socket程式,然後解析客戶端從瀏覽器位址列提交的資料。
要求:在瀏覽器中輸入http://localhost:8500 後,你的socket程式向瀏覽器返回乙個網頁,以後就用這個網頁向你寫得這個socket程式提交資料,你的socket程式負責解析這些資料關回答到那個網頁上去。
涉及的知識點:1. socket程式設計; 2.http請求與響應;
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define port 8500//埠號
#define backlog 5/*最大監聽數*/
int main();//本socket要返回給網頁的資訊
char* get_value[10];
sockfd=socket(af_inet,sock_stream,0);//獲得監聽套接字
if(sockfd==-1)
my_addr.sin_family=af_inet;/*協議簇*/
my_addr.sin_port=htons(port);/*埠號*/
my_addr.sin_addr.s_addr=htonl(inaddr_any);/*ip,括號內容表示本機ip*/
bzero(&(my_addr.sin_zero),8);/*將其他屬性置0*/
if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))<0)
listen(sockfd,backlog);//開啟監聽 ,第二個引數是最大監聽數
int number = 0;
while(1)
else
else
p2 = strtok(null, " ");
m++;
}printf("%s\n", p2); // p2的結果要麼是 / ,要麼是 /?aaa=18&b=99
char* p3 = null;//請求**中的變數部分
p2 = trim(p2); //去除p2前後的空格
if (strcmp(p2, "/") == 0)
else
p3 = strtok(null, "?");
m++;
}printf("%s\n", p3); // 得到的資料是這樣的形式: aaa=18&b=99
//下面是對aaa=18&b=99這樣的資料用&進行拆分
char* v[15];
char* p4 = null;
m = 0;
if (p3 != null)
}printf("共get了%d個引數\n", m);
printf("以下是get提交的資料,分別取出來後存放在get_value中\n");
int j;
int z = 0;
for (j = 0; j < m; ++j)}}
printf("get_value的資料分別是:\n");
for (j = 0; j < z; j++)
printf("get_value[1]= %s\n", get_value[1]);
if (strcmp(get_value[1], "cat+test") == 0)
else ;
//snprintf(buffer, 3, "%d", number);
//strcat(mybuf_1, buffer);}}
}number++;
}return 0;
}//去除尾部空格
char* rtrim(char* str)
int len = strlen(str);
char* p = str + len - 1;
while (p >= str && isspace(*p))
return str;
}//去除首部空格
char* ltrim(char* str)
int len = 0;
char* p = str;
while (*p != '\0' && isspace(*p))
memmove(str, p, strlen(str) - len + 1);
return str;
}//去除首尾空格
char* trim(char* str)
linux c socket程式設計
這裡主要是 網上有原理 socket 有同步,非同步之分,我這是個同步的,同步又有阻塞和非阻塞之分,這的非阻塞是用select 函式實現的 客戶端 include include include include include include include include include incl...
linux c socket程式設計
ntohl 與 htonl 相反的過程 ntohs 與htons 相反的過程 inet addr char 點分十進位制轉化為整型 inet nota int 整型轉化為點分十進位制 主機位元組序 和 網路位元組序 當主機位元組序埠號位為 0x1234 那麼 網路位元組序就為 0x12 0x34 如...
linux C socket 程式設計(二)
linux c socket 程式設計 一 linux c socket 程式設計 二 linux c socket 程式設計 三 tcpserver socket bind listen accept write read send recv close tcpclient socket conn...