Skip to content

Instantly share code, notes, and snippets.

@tjhv
Created February 17, 2018 05:35
Show Gist options
  • Save tjhv/0d18e7d7baf2350489c4f75c27cbcbf1 to your computer and use it in GitHub Desktop.
Save tjhv/0d18e7d7baf2350489c4f75c27cbcbf1 to your computer and use it in GitHub Desktop.
Old snippet from the beginning.
#include <iostream>
#include <winsock.h>
#define PORT 7096
#pragma comment(lib, "wsock32.lib")
int main(void)
{
std::cout << "Start of program." << std::endl;
WORD wVersion = MAKEWORD(1, 1);
WSADATA wsaData;
int eid;
eid = WSAStartup(wVersion, &wsaData);
if (eid != 0)
{
std::cout << "WSAStartup failed: " << WSAGetLastError() << std::endl;
std::cin.get();
return 1;
}
SOCKET server;
if ((server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
std::cout << "Error creating file descriptor: " << WSAGetLastError() << std::endl;
WSACleanup();
std::cin.get();
return 1;
}
struct sockaddr_in s;
memset(&s, 0, sizeof s);
s.sin_family = AF_INET;
s.sin_port = htons(PORT);
s.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(server, (struct sockaddr *) &s, sizeof s) == SOCKET_ERROR)
{
std::cout << "Error binding to local port: " << WSAGetLastError() << std::endl;
WSACleanup();
std::cin.get();
return 1;
}
if (listen(server, SOMAXCONN) < 0)
{
std::cout << "Error listening on local port: " << WSAGetLastError() << std::endl;
WSACleanup();
std::cin.get();
return 1;
}
std::cout << "Listening on local port: " << PORT << std::endl;
SOCKET client;
struct sockaddr_in c;
int len;
len = sizeof c;
if ((client = accept(server, (struct sockaddr *) &c, &len)) < 0)
{
std::cout << "Error accepting client: " << WSAGetLastError() << std::endl;
WSACleanup();
std::cin.get();
return 1;
}
struct sockaddr_in a;
len = sizeof a;
eid = getpeername(client, (struct sockaddr *) &a, &len);
if (eid < 0)
{
std::cout << "Error retrieving client numeric: " << WSAGetLastError() << std::endl;
WSACleanup();
std::cin.get();
return 1;
}
std::cout << "Connection received from: " << inet_ntoa(c.sin_addr) << std::endl;
closesocket(client);
std::cout << "End of program." << std::endl;
WSACleanup();
std::cin.get();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment