#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <time.h>
#include <errno.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/stat.h>
#include <fcntl.h>
#if 1
#define IPADDR "127.0.0.1" //本地服务器地址
#define PORT 7000 //本地服务器端口
#else
#define IPADDR "47.106.98.190" //服务器地址
#define PORT 80 //服务器端口
#endif
#define BUFFER_SIZE 4096
int main()
{
// char buf[1024] = "<html>"
// "<head>"
// "<title>"
// "aaa"
// "</title>"
// "</head>"
// "<body>"
// "<p>"
// "test p"
// "</p>"
// "</body>"
// "</html>";
char buf[1024];
int sockfd, client_sockfd;
struct sockaddr_in servaddr, clientaddr;
char send_buf[BUFFER_SIZE], recv_buf[BUFFER_SIZE];
//初始化网络连接结构体
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT);
servaddr.sin_addr.s_addr=INADDR_ANY;
/*
if(inet_pton(AF_INET, IPADDR, &servaddr.sin_addr) <= 0)
{
perror("Error: ");
exit(0);
}
*/
int fp;
fp = open("index.html", O_RDONLY);
read(fp, buf, sizeof(buf));
close(fp);
printf("buf :\n%s\n", buf);
//创建socket
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
perror("Error: ");
exit(0);
}
if(bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0)
{
perror("bind error");
exit(0);
}
if(listen(sockfd, 5) < 0)
{
perror("listen error:");
exit(0);
}
int sin_size;
sin_size = sizeof(struct sockaddr_in);
if((client_sockfd = accept(sockfd, (struct sockaddr *)&clientaddr, (socklen_t *)&sin_size)) < 0)
{
perror("accept error:");
exit(0);
}
printf("已成功与客户端建立了连接...\n");
memset(recv_buf, 0, sizeof(recv_buf));
recv(client_sockfd, recv_buf, sizeof(recv_buf) - 1, 0);
printf("\n%s\n", recv_buf);
memset(send_buf, 0, sizeof(send_buf));
strcat(send_buf, "HTTP/1.0 200 OK\r\n");
strcat(send_buf, "Server: wz simple httpd 1.0\r\n");
strcat(send_buf, "Content-Type: text/html\r\n");
strcat(send_buf, "\r\n");
// strcat(send_buf, "TSET\r\n");
// strcat(send_buf, "HTTPD\r\n");
strcat(send_buf, buf);
if(send(client_sockfd, send_buf, strlen(send_buf), 0) < 0)
{
perror("Error: ");
exit(0);
}
else
{
printf("send buf successful\n");
}
close(client_sockfd);
close(sockfd);
return 0;
}