c语言sockt实现通过浏览器访问ip返回数据

之前一直想用c语言写一个服务,通过浏览器访问ip加端口,返回数据,刚写了一个简单的例子返回404现在记下来,也供有同样需求的同学学习。

/*
 *     server.c
 *      请直接将本代码复制粘贴到你的编译环境中,编译且运行.
 *          运行后,可在浏览器中输入地址http://127.0.0.1/来访问server.
 *          */
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>

#pragma comment(lib , "Ws2_32.lib")

int main( int argc , char* argv[])
{
    char msg[1000];
    int serverSock , connectingSock;
    struct sockaddr_in serverAddr , connectingAddr;
    int addrlen ;

    serverSock = socket( AF_INET , SOCK_STREAM , IPPROTO_TCP);
    if( serverSock <0)
    {
        puts("socket建立失败");
        exit(1);
    }

    addrlen = sizeof(struct sockaddr);
    memset( &serverAddr , 0 , addrlen);
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(8888);
    serverAddr.sin_addr.s_addr = inet_addr("192.168.73.128");

    if( bind( serverSock , (struct sockaddr*)&serverAddr , sizeof(struct sockaddr_in) )<0)
    {
        puts("绑定IP 地址到socket失败");
        exit(1);
    }
    if(listen( serverSock , 10 ))
    {
        puts("设置socket为监听状态失败");
    }

    while(1){
        puts("等待客户端连接...");
        connectingSock = accept( serverSock , (struct sockaddr*)&connectingAddr , &addrlen);
        if( connectingSock <0  )
        {
            puts("处理连接时发生错误");
            break;
        }
        memset( msg , 0 , 1000) ;
        if ( recv( connectingSock , msg , 999 , 0) <= 0 )
        {
            puts("接收消息失败");
        }else{
            puts( msg);
        }
        //sprintf(msg,"HTTP/1.1 200 OK Date: Wed, 15 Jul 2009 08:48:40 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 Cache-Control: private Content-Type: text/html; charset=utf-8 Content-Length: 43775"); 
        sprintf(msg, "HTTP/1.1 404 Not Found\r\nServer: %s\r\nContent-Type: text/html\r\nContent-Length:    257271\r\nConnection: close\r\n\r\n", "Apache");  
        memset(&msg,0,sizeof(msg));  
        sprintf(msg,"<html><head><title>404 Not Found</title></head><body bgcolor=\"white\"><center><h1>404 Not Found</h1></center><hr><center>hahahahahah  %s</center></body></html>","牛逼class");  
        char html[100] = "/r/n/r/n <html><body>work hard</body></html>";
        strcat(msg,html);
        if( send( connectingSock , msg, strlen(msg ) , 0) <=0 )
        {
            puts("发送消息失败");
        }else{
            puts("发送消息成功");
        }
        close(connectingSock);
    }
    close(serverSock);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值