webserver通訊過程

2021-10-21 02:09:09 字數 2335 閱讀 5527

簡單的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架構之間的桌面應用 如瘦客戶...