I just started looking into this the other day to
and i have been programming for a while, so if you
dont understand basic of c/c++ thne you may want to wait
here is a list of some good sites
and here is some code which i just got around
to writing the other day, however it is for windows
client :
Code:
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#define NETWORK_ERROR -1
#define NETWORK_OK 0
void ReportError(int, const char *);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpCmd, int nShow)
{
WORD sockVersion;
WSADATA wsaData;
int nret;
sockVersion = MAKEWORD(1, 1);
WSAStartup(sockVersion, &wsaData);
LPHOSTENT hostEntry;
in_addr iaHost;
iaHost.s_addr = inet_addr("127.0.0.1");
hostEntry = gethostbyaddr((const char *)&iaHost, sizeof(struct in_addr), AF_INET);
//hostEntry = gethostbyname("www.hal-pc.org"); //gethostbyaddr();
if(!hostEntry)
{
nret = WSAGetLastError();
ReportError(nret, "gethostbyname()");
WSACleanup();
return NETWORK_ERROR;
}
SOCKET theSocket;
theSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(theSocket == INVALID_SOCKET)
{
nret = WSAGetLastError();
ReportError(nret, "socket()");
WSACleanup();
return NETWORK_ERROR;
}
SOCKADDR_IN serverInfo;
serverInfo.sin_family = AF_INET;
serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);
serverInfo.sin_port = htons(88);
nret = connect(theSocket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr));
if(nret == SOCKET_ERROR)
{
nret = WSAGetLastError();
ReportError(nret, "connect()");
WSACleanup();
return NETWORK_ERROR;
}
char buffer[256];
//char *buffer = new char[256];
ZeroMemory(buffer, 256);
strcpy(buffer, "Your a faggot :).");
nret = send(theSocket, buffer, strlen(buffer), 0);
if(nret == SOCKET_ERROR)
{
nret = WSAGetLastError();
ReportError(nret, "send()");
WSACleanup();
return NETWORK_ERROR;
}
else
{
char msges[100];
ZeroMemory(msges, 100);
sprintf(msges, "Sent %i bytes!", nret);
MessageBox(NULL, msges, "SentIndication", MB_OK);
}
closesocket(theSocket);
WSACleanup();
return NETWORK_OK;
}
void ReportError(int errorCode, const char *whichFunc)
{
char errorMsg[92];
ZeroMemory(errorMsg, 92);
sprintf(errorMsg, "Call to %s returned error %d!", (char*)whichFunc, errorCode);
MessageBox(NULL, errorMsg, "socketIndication", MB_OK);
}
server :
Code:
#include <windows.h>
#include <winsock.h>
#include <string>
#include <stdio.h>
using namespace std;
#define NETWORK_ERROR -1
#define NETWORK_OK 0
void ReportError(int, const char *);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmd, int nShow)
{
WORD sockVersion;
WSADATA wsaData;
int nret;
sockVersion = MAKEWORD(1, 1);
WSAStartup(sockVersion, &wsaData);
SOCKET listeningSocket;
listeningSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(listeningSocket == INVALID_SOCKET)
{
nret = WSAGetLastError();
ReportError(nret, "socket()");
WSACleanup();
return NETWORK_ERROR;
}
SOCKADDR_IN serverInfo;
serverInfo.sin_family = AF_INET;
serverInfo.sin_addr.s_addr = INADDR_ANY;
serverInfo.sin_port = htons(88);
nret = bind(listeningSocket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr));
if(nret == SOCKET_ERROR)
{
nret = WSAGetLastError();
ReportError(nret, "bind()");
WSACleanup();
return NETWORK_ERROR;
}
nret = listen(listeningSocket, 10);
if(nret == SOCKET_ERROR)
{
nret = WSAGetLastError();
ReportError(nret, "listen()");
WSACleanup();
return NETWORK_ERROR;
}
SOCKET theClient;
theClient = accept(listeningSocket, NULL, NULL);
if(theClient == INVALID_SOCKET)
{
nret = WSAGetLastError();
ReportError(nret, "accept()");
WSACleanup();
return NETWORK_ERROR;
}
string got, got1, all, all1;
char buffer[256];
nret = recv(theClient, buffer, 256, 0);
got = "You recieved the following message : ";
got1 = buffer;
all1 = got + got1;
all = all1.substr(0, ((all1.find_first_of(".?!", 0))+1));
if(nret == SOCKET_ERROR)
{
nret = WSAGetLastError();
ReportError(nret, "recv()");
WSACleanup();
return NETWORK_ERROR;
}
else
{
MessageBox(NULL, all.c_str(), "RecvIndication", MB_OK);
}
closesocket(theClient);
closesocket(listeningSocket);
WSACleanup();
return NETWORK_OK;
}
void ReportError(int errorCode, const char *whichFunc)
{
char errorMsg[92];
ZeroMemory(errorMsg, 92);
sprintf(errorMsg, "Call to %s returned error %d!", (char*)whichFunc, errorCode);
MessageBox(NULL, errorMsg, "socketIndication", MB_OK);
}
i accomplished thsi code using this site