将URL模式发送到C套接字检索它

时间:2015-08-01 17:58:22

标签: c sockets server

我正在尝试构建一个可以像真实服务器一样运行的应用程序,它可以连接多个客户端并调度路径以响应不同的URL。

我们可以发送像

这样的网址吗?
127.0.0.1:32000/urlPath/OtherSubPath
使用socket(PF_INET, SOCK_STREAM, 0)

到服务器套接字构建?并获取服务器端的url字符串?我的服务器套接字代码如下所示。

sockfd = socket(PF_INET, SOCK_STREAM, 0);

servaddr.sin_family = PF_INET;
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); 
servaddr.sin_port = htons(32000);

以下是代码的一部分。

int sockfd, n;
struct sockaddr_in servaddr, cliaddr;
socklen_t len;
char mesg[1000];

servaddr.sin_family = PF_INET;
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // htonl(INADDR_ANY); //inet_addr("127.0.0.1");
servaddr.sin_port = htons(32000);


if (bind(sockfd, (struct sockaddr *) &servaddr, sizeof (servaddr)) == -1)
    error("Can't bind the port");


len = sizeof (cliaddr);

time_t rawtime;
struct tm * timeinfo;

time(&rawtime);
timeinfo = localtime(&rawtime);
printf("Current local time and date: %s", asctime(timeinfo));
//  printf("IP %s\n", servaddr.sin_addr.s_addr);
char* banner = "Hello UDP client! This is UDP server";


struct timeval stop, start;

pthread_t t0;
if (pthread_create(&t0, NULL, request_balancer, NULL) == -1) {
    printf("Error in pthread for request balance");
}

if (listen(sockfd, 10) == -1)
    error("Can't listen");

while (1) {
    struct sockaddr_storage client_addr;
    unsigned int address_size = sizeof (client_addr);

    int connect_d = accept(sockfd, (struct sockaddr *) &client_addr, &address_size);

    if (connect_d == -1) {
        printf("Cannot open a socket");
        break;
    }
    web_req_count++;

    n = recvfrom(connect_d, mesg, 1000, 0, (struct
            sockaddr*) &cliaddr, &len);



    printf("Recieved: %d\n", web_req_count);
    int pid = fork();

    if (pid == 0) {

        while (1) {
            banner = asctime(timeinfo);
            time(&rawtime);
            timeinfo = localtime(&rawtime);
            sleep(1);
            send(connect_d, banner, strlen(banner), 0);
            int line_cnt = 0;
            printf("Recieved \n");

        }
    }

}

0 个答案:

没有答案