// This is My Client TCP program in C++
// Program Name client.cpp

#include <winsock2.h>
#include <iostream.h>

#include <windows.h>
#include <iomanip>


char szServerIPAddr[ 20 ] = "192.168.5.251" ; // IP address of my Server
int nServerPort = 5000 ; // The server port that will be used by clients for communication

int var1;
bool InitWinSock2_0( ) ;
int main( )

{

unsigned char str[12] = 
{0xAA,0xFF,0xC0,0x00,0x64,0x07,0xB7,0x98,0x2F,0x4D ,0x08,0x02}; 

// Querry Request to the Server

char tst[12] ={0}; 
char szBuffer[12] = {0};
char qzBuffer[12] = {0};

int q = 0;

while (q<12)
{
szBuffer[q] = str[q];
q = q++;
}

q=0;

printf("\n \n Actual Data Bytes To Be Send \n \n ");

while(q<12)
{
printf(" %c \n", szBuffer[q]);
q = q++;
}

Sleep(1000);


if ( ! InitWinSock2_0( ) )
{
cout << "Unable to Initialize Windows Socket environment" << WSAGetLastError( ) << endl ;
return -1 ;
}

SOCKET hClientSocket ;
hClientSocket = socket( AF_INET, // The address family. AF_INET specifies TCP/IP
SOCK_STREAM, // Protocol type. SOCK_STREM specified TCP
0 // Protoco Name. Should be 0 for AF_INET address family
) ;

if ( hClientSocket == INVALID_SOCKET )
{
cout << "Unable to create Server socket please verify the proper connection" << endl ;
// Cleanup the environment initialized by WSAStartup()
WSACleanup( ) ;
return -1 ;
}

//************************************************** *******************

// Create the structure describing various Server parameters


struct sockaddr_in serverAddr ;
serverAddr . sin_family = AF_INET ; // The address family. MUST be AF_INET
serverAddr . sin_addr . s_addr = inet_addr( szServerIPAddr ) ;
serverAddr . sin_port = htons( nServerPort ) ;


//************************************************** ********************
// For Testing 

Sleep(5000); // this command will cause the Delay in Milliseconds

//************************************************** ********************

// Connect to the server

if ( connect( hClientSocket, ( struct sockaddr * ) &serverAddr, sizeof( serverAddr ) ) < 0 )
{
cout << "\n \n Unable to connect to " << szServerIPAddr << " on port " << nServerPort << endl ;
closesocket( hClientSocket ) ;
WSACleanup( ) ;
return -1 ;
} 

int a = 1; 

/*do
{
cout << "\n \n Enter '1' to Start '0' to Wait: ";
cin >> a;

}
while(a==0);
*/

while (a==1)
{
int nLength = sizeof( szBuffer ) ;

cout << "\n \n Actual Buffer Length : " << nLength << "\n \n " ;


int nCntSend = 0 ;

// char *pBuffer = szBuffer ;

Sleep(5000);

while ( ( nCntSend = send( hClientSocket, szBuffer, nLength, 0 ) != nLength ) )
{

if ( nCntSend == -1 )
{
cout << "\n Error sending the data to server" << endl ;
break ;
}
if ( nCntSend == nLength )
break ;

//pBuffer += nCntSend ;
cout << "\n Command Sent to Mitsubishi FX2N is :: " << szBuffer << " " << endl ;
nLength -= nCntSend ;

}

Sleep(1000); // Request Time Out Settings for FX2N

nLength = recv( hClientSocket, qzBuffer, sizeof( qzBuffer ), 0 ) ;

if ( nLength > 0 )
{
qzBuffer[ nLength ] = '\0' ;

cout << " Bytes Received from PLC :: " << nLength << endl ;

cout << "\n \n Response From Mitsubishi FX2N is :: "<< endl ;

q =0;

while (q<nLength)
{
char b_char = qzBuffer[q];
tst[q] = b_char;
q = q++;
}

q=0;
printf("\n \n Actual Data Bytes Received \n \n ");


while(q<nLength)
{
unsigned char c_char = tst[q];
short int p = c_char;
printf(" %d \n", p);
q = q++;
}
Sleep(5000);

}

}
closesocket( hClientSocket ) ;
WSACleanup( ) ;
return 0 ;
}

bool InitWinSock2_0( )
{
WSADATA wsaData ;
WORD wVersion = MAKEWORD( 2, 0 ) ;
if ( ! WSAStartup( wVersion, &wsaData ) )
return true ;
return false ;
}



// And this is my C program which will use the reply received form the server which is stored in qzBuffer in above clinet.cpp

// This is C program.

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <MyHeader.h>

#ifdef VMS
#pragma nostandard
noshare 
#pragma standard
unsigned short int D[300 + 1];



int user_server_update(unsigned char * tzBuffer) 

{
int i, n,m;

m = n;
while(m == n)
{

for (i=0;i< 12; i++)
{
D[i]++;
}
n=1;
m=2;
}

D[20]++;

return (0);
}



int main()

{
unsigned char T[30] = {0};
FILE *fp;
int m;


m = user_server_update(T);



if((fp = fopen("c:\\server_values.txt", "wb"))==NULL) {
printf("Cannot open file.\n");
exit(1);
}

// write the entire array in one step 
if(fwrite(T, sizeof T, 1, fp) != 1) {
printf("Write error.\n");
exit(1);
}

fclose(fp);
return;
}

// Also i wud be happy to understand any option of DLL usage for sharing the data between C & C++ Function also i want both function capable of editing the same variable / array (variable )

Edited 6 Years Ago by WaltP: Added CODE tags -- with all the help about them, how could you miss using them????

This article has been dead for over six months. Start a new discussion instead.