#include<stdio.h>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
int merror(int retdata,int error,char* showInfo) {
if (retdata == error)
{
perror(showInfo);
getchar();
return -1;
}
return 0;
}
void sendhtml(SOCKET s, char* filename);
int main() {
printf("欢迎访问web服务器...\n");
WSADATA wsadata;
int res = WSAStartup(MAKEWORD(2,2), &wsadata);
merror(res, WSAEINVAL, "申请socket失败");
SOCKET server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
merror(server,INVALID_SOCKET,"创建socket失败");
struct sockaddr_in seraddr;
seraddr.sin_family = AF_INET;
seraddr.sin_port = htons(80);
seraddr.sin_addr.s_addr = INADDR_ANY;
res = bind(server,&seraddr,sizeof(seraddr));
merror(res,SOCKET_ERROR,"绑定失败...\n");
res = listen(server,5);
merror(res,SOCKET_ERROR,"监听失败...\n");
struct sockaddr_in claddr;
int cllen = sizeof(claddr);
while(1) {
SOCKET client = accept(server, &claddr, &cllen);
merror(client, INVALID_SOCKET, "连接失败...\n");
char revdata[1024] = "";
recv(client, revdata,1024, 0);
printf("%s共接收到%d字节数据\n", revdata, strlen(revdata));
char* filename = "./index.html";
sendhtml(client, filename);
closesocket(client);
}
closesocket(server);
WSACleanup();
getchar();
return 0;
}
void sendhtml(SOCKET s,char *filename) {
FILE* pfile = fopen(filename,"r");
if (pfile ==NULL)
{
printf("打开文件失败\n");
return;
}
char temp[1024] = "";
do
{
fgets(temp, 1024, pfile);
send(s, temp, strlen(temp), 0);
} while (!feof(pfile));
}