64,654
社区成员
发帖
与我相关
我的任务
分享
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <mswsock.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib , "ws2_32.lib")
#define MAXLINE 4096
int main(int argc, char* argv[])
{
SOCKET listenfd, connfd;
struct sockaddr_in servaddr;
char buff[MAXLINE];
int n;
WSADATA WSAData;
if (WSAStartup(MAKEWORD(2,2),&WSAData) != 0)
{
printf("WSAStartup error: %d\n", GetLastError());
getchar();
exit(0);
}
if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1 )
{
printf("create socket error: %d\n", GetLastError());
getchar();
exit(0);
}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(12345);
if(bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1)
{
printf("bind socket error: %d\n", GetLastError());
getchar();
exit(0);
}
if( listen(listenfd, 10) == -1)
{
printf("listen socket error: %d\n", GetLastError());
getchar();
exit(0);
}
while(true)
{
printf("======waiting for client's request======\n");
if( (connfd = accept(listenfd, (struct sockaddr*)NULL, NULL)) == -1)
{
printf("accept socket error: %d\n", GetLastError());
continue;
}
while (true)
{
n = recv(connfd, buff, MAXLINE, 0);
if (0 == n)
{
break;
}
buff[n] = '\0';
printf("recv msg from client: %s\n", buff);
char *httphead = "HTTP/1.1 200 OK\r\nContent-type:text/html\r\nContent-length:66\r\nConnection: close\r\n\r\n";
char *httpbody = "<!doctype html><html><head></head><body>hello web!</body></html>\r\n";
send(connfd, httphead, strlen(httphead), 0);
send(connfd, httpbody, strlen(httpbody), 0);
}
closesocket(connfd);
}
closesocket(listenfd);
return 0;
}