#include <stdio.h>
#include <winsock.h>
#include <conio.h>
int main(int nArgCnt,char *pszArg[])
{
// Check arguments
if(nArgCnt!=3)
{
printf("Usage: DMEO <ip> <port>\n");
return 1;
}
// Initialize WinSock.DLL
WSADATA m_WSAData;
if(WSAStartup(0x101,(LPWSADATA)&m_WSAData)!=0)
{
printf("Unable to initialize WINSOCK.DLL\n");
WSACleanup();
return 1;
}
// Get IP and port
unsigned long lIp = inet_addr(pszArg[1]);
int nPort = atoi(pszArg[2]);
// Open socket and connect to RSIP
SOCKET s = socket(AF_INET,SOCK_STREAM,0);
sockaddr_in sai;
sai.sin_family = AF_INET;
sai.sin_addr.s_addr = lIp;
sai.sin_port = htons(nPort);
if(connect(s,(LPSOCKADDR)&sai,sizeof(sai))==SOCKET_ERROR)
{
printf("Unable to connect to RSIP\n");
WSACleanup();
return 2;
}
printf("Connected to %s:%s\n",pszArg[1],pszArg[2]);
// A easy talk program, press ESC to break.
const int BUF_SIZE = 1024;
char szBuf[BUF_SIZE];
while(TRUE)
{
if(kbhit())
{
char c = getch();
if(c==27)
break;
send(s,&c,sizeof(char),0);
}
// Check socket buffer
unsigned long lArg = 1;
ioctlsocket(s,FIONBIO,&lArg);
int n = recv(s,szBuf,BUF_SIZE,MSG_PEEK);
lArg = 0;
ioctlsocket(s,FIONBIO,&lArg);
// Is data ready ?
if(n>0)
{
recv(s,szBuf,sizeof(char),0);
printf("%c",szBuf[0]);
}
}
// Close socket and Uninitialize WinSock.DLL
closesocket(s);
WSACleanup();
printf("Program terminated\n");
return 0;
}