Code:
#include <windows.h>
#include <winsock.h>
#define WM_SOCKETMESSAGE WM_USER+1
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
SOCKET listeningSocket;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wc;
wc.style=CS_HREDRAW|CS_VREDRAW;
wc.cbWndExtra=0;
wc.cbClsExtra=0;
wc.hInstance=hInstance;
wc.lpfnWndProc=WndProc;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName=NULL;
wc.lpszClassName="JCPPChat";
if(!RegisterClass(&wc))
return 0;
hwnd=CreateWindow("JCPPChat","JCPPChat",WS_POPUPWINDOW|WS_CAPTION|WS_MINIMIZEBOX,(GetSystemMetrics(SM_CXSCREEN)/2)-320,(GetSystemMetrics(SM_CYSCREEN)/2)-240,640,480,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
WSAData wsaData;
WORD sockVer;
int nret;
sockVer=MAKEWORD(1,1);
WSAStartup(sockVer,&wsaData);
listeningSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(listeningSocket==INVALID_SOCKET)
{
WSACleanup();
return 0;
}
SOCKADDR_IN serverInfo;
serverInfo.sin_family=AF_INET;
serverInfo.sin_addr.s_addr=INADDR_ANY;
serverInfo.sin_port=htons(6783);
nret=bind(listeningSocket,(LPSOCKADDR)&serverInfo,sizeof(struct sockaddr));
if(nret==SOCKET_ERROR)
{
WSACleanup();
return 0;
}
nret=listen(listeningSocket,1);
if(nret==SOCKET_ERROR)
{
WSACleanup();
return 0;
}
WSAAsyncSelect(listeningSocket,hwnd,WM_SOCKETMESSAGE,(FD_READ|FD_CONNECT|FD_CLOSE));
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
closesocket(listeningSocket);
WSACleanup();
return msg.wParam;
}
SOCKET clientSocket;
char buffer[500]={0};
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_SOCKETMESSAGE:
if(WSAGETSELECTERROR(lParam))
{
WSACleanup();
return 0;
}
switch(WSAGETSELECTEVENT(lParam))
{
case FD_CONNECT:
clientSocket=accept(listeningSocket,NULL,NULL);
if(clientSocket==INVALID_SOCKET)
WSACleanup();
else
MessageBox(NULL,"We've accepted a new connection", "New Connection",0);
break;
case FD_CLOSE:
closesocket(clientSocket);
break;
case FD_READ:
memset(buffer,0,500);
recv(clientSocket,buffer,500,0);
MessageBox(hwnd,buffer,"New Data Received",0);
break;
}
return 0;
case WM_DESTROY:
closesocket(clientSocket);
WSACleanup();
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,msg,wParam,lParam);
}
Sorry for that, I hate reading long bits of code too but not much I could have left out without confusing you. Thanks again for your replies.