1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| #include<stdio.h> #include<stdbool.h> #include<WinSock2.h>//包含网络编程的头文件,引入静态库 #pragma comment(lib,"ws2_32.lib") bool isok; int merror(int redata,int error,char* showinfo) { if (redata == error) { perror(showinfo); getchar(); return -1; } return 0; } void sendhtml(SOCKET s, char* filename); int main(void) { printf("weclome to my WebServer\n"); WSADATA wsdata; WSAStartup(MAKEWORD(2,2),&wsdata); merror(isok,WSAEINVAL,"申请socket失败"); SOCKET server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); merror(server, INVALID_SOCKET, "创建socker失败"); struct sockaddr_in seraddr; seraddr.sin_family = AF_INET; seraddr.sin_port = htons(80); seraddr.sin_addr.s_addr = INADDR_ANY; isok = bind(server,&seraddr,sizeof(seraddr)); merror(isok, SOCKET_ERROR, "绑定失败...\n"); isok = listen(server, 5); merror(isok, 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 sendata[1024] = "<h1 style =\" color:pink;\">hello,i'm sb</h1>"; send(client,sendata,strlen(sendata),0); char* filename = "/"; void sendhtml(client, filenama); closesocket(client); } closesocket(server); WSACleanup(); getchar(); return 0; }
void sendhtml(SOCKET s, char* filename) { FILE* pfile = fopen(filename, "r"); if (pfile == NULL) { printf("文件打开失败"); return; } char temp[1024] = ""; do { fgets(temp, 1024, pfile); send(s, temp, strlen(temp), 0); } while (!feof(pfile)); }
|