Basic hello world web serveur

unix_test
anulax1225 ago%!(EXTRA string=1 year)
parent 89a1b75bd2
commit b5fae8b6e9
  1. 10
      .gitignore
  2. 9
      README.md
  3. 27
      premake5.lua
  4. 63
      src/main.cpp

10
.gitignore vendored

@ -0,0 +1,10 @@
docs/
**.log
bin/
bin-int/
.vscode/
.vs/
**.sln
**Makefile
**.make
**.vcxproj*

@ -0,0 +1,9 @@
# Unix socket test
## Prerequisite
Use a linux distro
## Build and Run
```
premake5 gmake
make
./bin/path_to_executable/sandbox
```

@ -0,0 +1,27 @@
workspace "socket_test"
architecture "x64"
configurations { "Debug", "Release" }
startproject "sandbox"
flags
{
"MultiProcessorCompile"
}
outputdir = "%{cfg.system}-%{cfg.architecture}-%{cfg.buildcfg}"
IncludeDirs = {}
project "sandbox"
kind "ConsoleApp"
language "C++"
cppdialect "C++17"
systemversion "latest"
targetdir("%{wks.location}/bin/" .. outputdir .. "/%{prj.name}")
objdir("%{wks.location}/bin-int/" .. outputdir .. "/%{prj.name}")
files
{
"src/**.h",
"src/**.cpp"
}

@ -0,0 +1,63 @@
#include <iostream>
#include <string>
//C socket includes
#include <netinet/in.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <unistd.h>
int main()
{
int server_fd;
ssize_t valread;
struct sockaddr_in address;
socklen_t addrlen = sizeof(address);
//Socket creation step
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
perror("socket failed");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(80);
//Binding step
if (bind(server_fd, (struct sockaddr*)&address,
sizeof(address))
< 0)
{
perror("bind failed");
exit(EXIT_FAILURE);
}
//Listening step
if (listen(server_fd, 3) < 0)
{
perror("listen");
exit(EXIT_FAILURE);
}
std::string msg = "HTTP/1.1 200 OK\r\n"
"Content-Type: text/html\r\n\r\n"
"<p>Hello World!</p>";
while (true)
{
int socket;
//Accepting connections step
if ((socket
= accept(server_fd, (struct sockaddr*)&address,
&addrlen))
> 0)
{
//Sending data step
send(socket, msg.c_str(), msg.length(), 0);
close(socket);
}
}
close(server_fd);
return 0;
}
Loading…
Cancel
Save