簡單的http伺服器
#include #include #include #include #include #include #include #include #include #include #include #include #define n 1024
#define err_log(errmsg) dowhile(0)
void *pthread_fun(void *arg)
printf("*****************************\n\n");
printf("%s\n", buf);
// int i;
// for(i = 0; i < 200; i++)
// printf("\n*****************************\n");
//通過獲取的資料報中得到瀏覽器要訪問的網頁檔名
sscanf(buf, "get /%s", filename); //sscanf函式與空格結束,所以直接可以獲取檔名
//通過解析出來的網頁檔名,查詢本地中有沒有這個檔案
int fd;
if((fd = open(path, o_rdonly)) < 0)
close(acceptfd);
pthread_exit(null);
}else
}//如果檔案存在,先傳送指令告知瀏覽器
if(send(acceptfd, head, strlen(head), 0) < 0)
//讀取網頁檔案中的內容並傳送給瀏覽器
ssize_t bytes;
char text[1024] = "";
while((bytes = read(fd, text, 1024)) > 0)
}pthread_exit(null);}
int main(int argc, char const *ar**)
int sockfd, acceptfd;
struct sockaddr_in serveraddr, clientaddr;
socklen_t addrlen = sizeof(serveraddr);
//第一步:建立套接字
if((sockfd = socket(af_inet, sock_stream, 0)) < 0)
//將套接字設定為允許重複使用本機位址或者為設定為埠復用
int on = 1;
if(setsockopt(sockfd, sol_socket, so_reuseaddr, &on, sizeof(on)) < 0)
//第二步:填充伺服器網路資訊結構體
serveraddr.sin_family = af_inet;
serveraddr.sin_addr.s_addr = inet_addr(ar**[1]);
serveraddr.sin_port = htons(atoi(ar**[2]));
//第三步:將套接字與伺服器網路資訊結構體繫結
if(bind(sockfd, (struct sockaddr *)&serveraddr, addrlen) < 0)
//第四步:將套接字設定為被動監聽狀態
if(listen(sockfd, 5) < 0)
while(1)
//列印客戶端的資訊
printf("%s -- %d\n", inet_ntoa(clientaddr.sin_addr), ntohs(clientaddr.sin_port));
//建立執行緒接收資料並處理資料
pthread_t thread;
if(pthread_create(&thread, null, pthread_fun, &acceptfd) != 0)
pthread_detach(thread);
}return 0;
}
webServer 介面開發
開發乙個webserver需要伺服器短和客戶端 一般而言客戶端負責請求,服務端負責響應,那麼怎麼開發乙個服務端呢,我們知道客戶端是通過伺服器的描述檔案生成或者手動編寫,這裡我推薦用myeclipse生成比較簡單,只要服務端寫好了客戶端只要根據描述檔案生成就很容易了。cxf 篇 首先需要乙個服務端 然...
一款輕量級的桌面WebServer通訊元件
背景 隨著網際網路的不斷發展,傳統的 web應用程式已經不能完全滿足使用者的需要。由於桌面應用程式相比 web應用程式可以實現更多的功能,並相比 web應用程式更容易訪問本地資源,所以一些界於 bs架構和 cs架構之間的桌面應用 如瘦客戶端 便應運而生,這些桌面應用在客戶機上以 winform 的形...
一款輕量級的桌面WebServer通訊元件
一款輕量級的 web 通訊元件 個人部落格 2007 7 南京背景 隨著網際網路的不斷發展,傳統的 web應用程式已經不能完全滿足使用者的需要。由於桌面應用程式相比 web應用程式可以實現更多的功能,並相比 web應用程式更容易訪問本地資源,所以一些界於 bs架構和 cs架構之間的桌面應用 如瘦客戶...