前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[linux] C语言Linux系统编程-socket开发响应HTTP协议

[linux] C语言Linux系统编程-socket开发响应HTTP协议

作者头像
唯一Chat
发布2019-09-10 12:54:37
9620
发布2019-09-10 12:54:37
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地
代码语言:javascript
复制
#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 = htonl(INADDR_ANY);  //具体的IP地址
        serv_addr.sin_port = htons(1234);  //端口
        bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
        //进入监听状态,等待用户发起请求
        listen(serv_sock, 20);
        while(1){
                //接收客户端请求
                struct sockaddr_in clnt_addr;
                socklen_t clnt_addr_size = sizeof(clnt_addr);
                int clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size);

                FILE *cin = fdopen(clnt_sock, "r");
                setbuf(cin, (char *) 0);
                char buf[1024];
                fgets(buf, 1024, cin); //读取第一行
                printf("\n%s", buf);
                char *html="Hello Taoshihan ";
                char *result = malloc(strlen(html) + strlen(buf) + 1);
                strcpy(result, html);
                strcat(result, buf);
                                                                                                    34,7-17       Top
                //接收客户端请求
                struct sockaddr_in clnt_addr;
                socklen_t clnt_addr_size = sizeof(clnt_addr);
                int clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size);

                FILE *cin = fdopen(clnt_sock, "r");
                setbuf(cin, (char *) 0);
                char buf[1024];
                fgets(buf, 1024, cin); //读取第一行
                printf("\n%s", buf);
                char *html="Hello Taoshihan ";
                char *result = malloc(strlen(html) + strlen(buf) + 1);
                strcpy(result, html);
                strcat(result, buf);

                //char *result=str_join(html,buf);
                char res[1024];
                char str[] = "HTTP/1.1 200 OK\r\nServer: Tao\r\nContent-Type: text/html; charset=utf-8\r\nContent-Leng
th: %d\r\n\r\n%s";
                sprintf(res,str,strlen(result),result);
                printf("%s\n",res);
                write(clnt_sock, res, sizeof(res));
                //关闭套接字
                close(clnt_sock);
        }
        close(serv_sock);
        return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档