Compare commits

...

3 Commits

Author SHA1 Message Date
ZimPoPo 861bbd0a4c
Premake5 add clean action ago%!(EXTRA string=1 year)
ZimPoPo 45aab99712
Setup premake5 ago%!(EXTRA string=1 year)
ZimPoPo be52ba2285
Simple client/server message ago%!(EXTRA string=1 year)
  1. 7
      .gitignore
  2. 4
      bakanet/bakanet.vcxproj.user
  3. 13
      bakanet/premake5.lua
  4. 1
      bakanet/src/bakanet.h
  5. 32
      premake5.lua
  6. 15
      sandbox/client/premake5.lua
  7. 68
      sandbox/client/src/main.cpp
  8. 15
      sandbox/server/premake5.lua
  9. 97
      sandbox/server/src/main.cpp

7
.gitignore vendored

@ -0,0 +1,7 @@
.vs
**Makefile
**vcxproj
**.vcxproj.filters
*sln
bin
bin-int

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>

@ -0,0 +1,13 @@
project "bakanet"
kind "StaticLib"
language "C++"
cppdialect "C++17"
systemversion "latest"
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
files {
"src/**.h",
"src/**.cpp"
}

@ -0,0 +1 @@
#pragma once

@ -0,0 +1,32 @@
workspace "winsock_test"
architecture "x64"
configurations
{
"Debug",
"Release"
}
-- startproject "winsock_test"
outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"
-- Include projects
include "bakanet"
include "sandbox/client"
include "sandbox/server"
newaction {
trigger = "clean",
description = "Clean the build",
execute = function()
print("Cleaning...")
os.rmdir("./bin")
os.rmdir("./bin-int")
os.remove("**.sln")
os.remove("**.vcxproj")
os.remove("**.vcxproj.filters")
print("Done.")
end
}

@ -0,0 +1,15 @@
project "client"
kind "ConsoleApp"
language "C++"
cppdialect "C++17"
systemversion "latest"
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
files {
"src/**.h",
"src/**.cpp"
}
links { "bakanet"}

@ -0,0 +1,68 @@
#include <iostream>
#include <Ws2tcpip.h>
#include <WinSock2.h>
#include <tchar.h>
#pragma comment(lib,"WS2_32.lib")
int main()
{
WSADATA wsaData;
int err;
err = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (err != 0)
{
std::cout << "Winsock DDL not found!" << std::endl;
WSACleanup();
system("pause");
return 0;
}
//client socket
SOCKET sock;
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == INVALID_SOCKET)
{
std::cout << "Invalid client socker: " + WSAGetLastError() << std::endl;
WSACleanup();
system("pause");
return 0;
}
//conf socket
sockaddr_in service;
service.sin_family = AF_INET;
InetPton(AF_INET, _T("127.0.0.1"), &service.sin_addr.s_addr);
service.sin_port = htons(25580);
//connect to serv
if (connect(sock, (SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR)
{
std::cout << "Failed to connect to the server: " + WSAGetLastError() << std::endl;
closesocket(sock);
WSACleanup();
system("pause");
return 0;
}
//send message to serv
std::string message = "Hello server!";
if (send(sock, message.c_str(), message.length(), 0) == SOCKET_ERROR)
{
std::cout << "Failed to send messaage to the server: " + WSAGetLastError() << std::endl;
closesocket(sock);
WSACleanup();
system("pause");
return 0;
}
std::cout << "All good :)" << std::endl;
closesocket(sock);
WSACleanup();
system("pause");
return 0;
}

@ -0,0 +1,15 @@
project "server"
kind "ConsoleApp"
language "C++"
cppdialect "C++17"
systemversion "latest"
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
files {
"src/**.h",
"src/**.cpp"
}
links { "bakanet"}

@ -0,0 +1,97 @@
#include <iostream>
#include <Ws2tcpip.h>
#include <WinSock2.h>
#include <tchar.h>
#pragma comment(lib, "WS2_32.lib")
int main()
{
WSADATA wsaData;
int err;
err = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (err != 0)
{
std::cout << "Winsock DLL not found!" << std::endl;
WSACleanup();
system("pause");
return 0;
}
//server socket
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == INVALID_SOCKET)
{
std::cout << "Invalid server socket: " << WSAGetLastError() << std::endl;
WSACleanup();
system("pause");
return 0;
}
//conf socket
sockaddr_in service;
service.sin_family = AF_INET;
service.sin_addr.s_addr = INADDR_ANY;
service.sin_port = htons(25580);
//bind
if (bind(sock, (SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR)
{
std::cout << "Bind failed: " << WSAGetLastError() << std::endl;
closesocket(sock);
WSACleanup();
system("pause");
return 0;
}
//listen
if (listen(sock, SOMAXCONN) == SOCKET_ERROR)
{
std::cout << "Listen failed: " << WSAGetLastError() << std::endl;
closesocket(sock);
WSACleanup();
system("pause");
return 0;
}
std::cout << "Waiting for connection..." << std::endl;
//Accept client socket
SOCKET clientSocket = accept(sock, NULL, NULL);
if (clientSocket == INVALID_SOCKET)
{
std::cout << "Accept failed: " << WSAGetLastError() << std::endl;
closesocket(sock);
WSACleanup();
system("pause");
return 0;
}
std::cout << "Client connected" << std::endl;
char buffer[256];
int bytesRead;
do
{
bytesRead = recv(clientSocket, buffer, sizeof(buffer), 0);
if (bytesRead > 0)
{
buffer[bytesRead] = '\0';
std::cout << buffer << std::endl;
}
} while (bytesRead > 0);
closesocket(clientSocket);
closesocket(sock);
WSACleanup();
system("pause");
return 0;
}
Loading…
Cancel
Save