#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; }