如何用C语言开发一个通用web服务器?

如何用C语言开发一个通用web服务器?,第1张

用C语言开发WEB,可以用C++BUILDER6,称ISAPI,一般人可能做不起来,有点麻烦;

唯一是速度很快,别人看不到源码,掌握了编程套路,也可以开发应用;

缺点:

1。不是解释性语言,做的WEB调试非常麻烦;现在做WEB开发的,用C#、JAVA较多;都是解释性的语言;

2。因为是.DLL的二进制代码,一般商业网站不给予运行的环境,因为网站服务器会被你可能搞瘫,安全性得不到保障;所以,你得自备网页服务器;

3。得不到技术支持,因为没几个人会这种开发;

去看一下《Advanced Linux Programming》这本书吧,第11章讲的就是怎么用C语言实现一Http服务器。 这里有下载地址(英文的): http://www.advancedlinuxprogramming.com/alp-folder 英文看起来不顺的话可以上网找找有没有中文版的这本书,应该叫Linux高级编程吧~~~参考资料: http://www.advancedlinuxprogramming.com/alp-folder

OK

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/ip.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <stdio.h>

#include <stdlib.h>

#include <strings.h>

#include <unistd.h>

#include <string.h>

int main(int argc,char *argv[])

{

int sockfd,new_socket

int sock_value

char buf[] = "hello! China!I Love You\n"

struct sockaddr_in client_

struct sockaddr_in server_

int SIZE = sizeof(struct sockaddr_in)

if(argc != 2){

fprintf(stderr,"The two number!\n")

exit(1)

}

if((sock_value = atoi(argv[1])) <0){

fprintf(stderr,"socket error!\n")

exit(1)

}

if((sockfd = socket(PF_INET,SOCK_STREAM, 0)) == -1){

perror("socket")

exit(1)

}

bzero(&server_,SIZE)

server_.sin_family = PF_INET

server_.sin_port = htons(sock_value)

server_.sin_addr.s_addr = INADDR_ANY

if(bind(sockfd,(struct sockaddr *)(&server_),SIZE) == -1){

perror("bind")

exit(1)

}

if(listen(sockfd, 12) == -1){

perror("listen")

exit(1)

}

printf("Waiting ... ...\n")

while(1){

if((new_socket = accept(sockfd,(struct sockaddr *)(&client_),&SIZE)) == -1){

perror("accept")

exit(1)

}

printf("The client IP is %s\n",inet_ntoa(client_.sin_addr))

printf("The socket is %d\n",ntohs(client_.sin_port))

if(write(new_socket,buf,strlen(buf)) == -1){

perror("write")

exit(1)

}

int my

char mybuf[1024]

if((my = read(new_socket, mybuf,1024)) == -1){

perror("read")

exit(1)

}

mybuf[my] = '\0'

printf("#++++#++++#:%s\n",mybuf)

close(new_socket)

}

close(sockfd)

return 0

}

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/ip.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <stdio.h>

#include <stdlib.h>

#include <strings.h>

#include <unistd.h>

int main(int argc,char *argv[])

{

int sockfd

int sock_value

char buf[1024]

char mybuf[] = "Linux\n"

int read_count

struct sockaddr_in client_

struct sockaddr_in server_

int SIZE = sizeof(struct sockaddr_in)

if(argc != 3){

fprintf(stderr,"The two number!\n")

exit(1)

}

if((sock_value = atoi(argv[2])) <0){

fprintf(stderr,"socket error!\n")

exit(1)

}

if((sockfd = socket(PF_INET,SOCK_STREAM, 0)) == -1){

perror("socket")

exit(1)

}

bzero(&client_,SIZE)

bzero(&server_,SIZE)

client_.sin_family = PF_INET

client_.sin_port = htons(52252)

client_.sin_addr.s_addr = INADDR_ANY

server_.sin_family = PF_INET

server_.sin_port = htons(sock_value)

server_.sin_addr.s_addr = inet_addr(argv[1])

if(connect(sockfd,(struct sockaddr *)(&server_),SIZE) == -1){

perror("connect")

exit(1)

}

if((read_count = read(sockfd,buf,1024)) == -1){

perror("read")

exit(1)

}

buf[read_count] = '\0'

printf("#----#----#:%s\n",buf)

if(write(sockfd, mybuf,6) == -1){

perror("write")

exit(1)

}

close(sockfd)

exit(0)

return 0

}


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/722706.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-09
下一篇2023-08-09

发表评论

登录后才能评论

评论列表(0条)

    保存