hi,
the error i am getting in main for allocating heap memory for threads is
[code=c]
#include <stdio.h>
#include "winsock2.h "
#include <stdlib.h>
#include <windows.h>
#include <strsafe.h>
#define BUF_SIZE 255
#define nofthreads 2
typedef struct data
{
char a[36];
}char_36;
// Initialize Winsock.
WSADATA wsaData1,wsaDat a2;
// Create a socket.
SOCKET m_socket1,m_soc ket2;
SOCKADDR_IN client1Service, client2Service;
BOOL wiatall = TRUE;
CRITICAL_SECTIO N cs;
// Send and receive data.
//int bytesSent;
int bytesRecv1,byte sRecv2 = SOCKET_ERROR;
//char sendbuf[32] = "Client: Sending data.";
char recvbuf1[36] = "";
char recvbuf2[36] = "";
DWORD WINAPI workerProc( LPVOID lpParam )
{
char recvbuf1[36] = "";
int status ;
size_t cchStringSize;
int iResult;
TCHAR msgBuf[BUF_SIZE];
iResult = WSAStartup( 0X0202, &wsaData1 );
if ( iResult != NO_ERROR )
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("error at WSASTARTUP"));
m_socket1 = socket( AF_INET, SOCK_STREAM,IPP ROTO_TCP);
if ( m_socket1 == INVALID_SOCKET )
{
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("error at socket"));
WSACleanup();
return(0);
}
client1Service. sin_family = AF_INET;
client1Service. sin_addr.s_addr = inet_addr( "192.168.0. 239" );
client1Service. sin_port = htons(27015);
do
{
status = connect( m_socket1, (SOCKADDR *) &client1Service , sizeof(client1S ervice) );
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("failed to connect"));
WSACleanup();
return(0);
}while(status == SOCKET_ERROR);
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("connected to client 1"));
while( bytesRecv1 == SOCKET_ERROR )
{
bytesRecv1 = recv( m_socket1, recvbuf1, 36, 0 );
if ( bytesRecv1 == 0 || bytesRecv1 == WSAECONNRESET )
{
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("connectio n closed"));
break;
}
if (bytesRecv1 < 0)
return(0);
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("bytes received"));
}
HeapFree(GetPro cessHeap(), 0, recvbuf1);
return(0);
}
DWORD WINAPI ThreadProc( LPVOID lpParam )
{
TCHAR msgBuf[BUF_SIZE];
size_t cchStringSize;
char recvbuf2[36] = "";
int iResult = WSAStartup( 0X0202, &wsaData2 );
if ( iResult != NO_ERROR )
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("error at WSASTARTUP"));
m_socket2 = socket( AF_INET, SOCK_STREAM,IPP ROTO_TCP);
if ( m_socket2 == INVALID_SOCKET )
{
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("error at socket"));
WSACleanup();
return(0);
}
client2Service. sin_family = AF_INET;
client2Service. sin_addr.s_addr = inet_addr( "192.168.0. 091" );
client2Service. sin_port = htons(27016);
do
{
connect( m_socket2, (SOCKADDR *) &client2Service , sizeof(client2S ervice) );
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("failed to connect"));
WSACleanup();
return(0);
}while(connect == SOCKET_ERROR);
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("Connected to client 2"));
while( bytesRecv2 == SOCKET_ERROR )
{
bytesRecv2 = recv( m_socket2, recvbuf2, 36, 0 );
if ( bytesRecv2 == 0 || bytesRecv2 == WSAECONNRESET )
{
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("connectio n closed"));
break;
}
if (bytesRecv2 < 0)
return(0);
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("bytes received"));
}
HeapFree(GetPro cessHeap(), 0, recvbuf2);
return(0);
}
int main()
{
DWORD i=1;
HANDLE hThread,access;
DWORD dwThreadId,Idth read;
int Prio=2;
recvbuf1 = HeapAlloc(GetPr ocessHeap(), HEAP_ZERO_MEMOR Y,sizeof(char_3 6));
recvbuf2 = HeapAlloc(GetPr ocessHeap(), HEAP_ZERO_MEMOR Y,sizeof(char_3 6));
hThread = CreateThread(
NULL, // default security attributes
0, // use default stack size
ThreadProc, // thread function
recvbuf1, // argument to thread function
0, // use default creation flags
NULL); // returns the thread identifier
access = CreateThread(
NULL, // default security attributes
0, // use default stack size
workerProc, // thread function
recvbuf2, // argument to thread function
0, // use default creation flags
NULL); // returns the thread identifier
if (hThread == NULL)
{
ExitProcess(1);
}
if(access == NULL)
{
ExitProcess(2);
}
WaitForMultiple Objects(1,hThre ad,TRUE,INFINIT E);
//WaitForSingleOb ject(hThread,IN FINITE);
CloseHandle(hTh read);
CloseHandle(acc ess);
return(0);
}
[/code]
\..\integration \integration\Cl ient.c(150): error: expression must be a modifiable lvalue
recvbuf2 = HeapAlloc(GetPr ocessHeap(), HEAP_ZERO_MEMOR Y,sizeof(char_3 6));
char_36 i have used
typedef struct data
{
char a[36];
}char_36;
what could the error.
the error i am getting in main for allocating heap memory for threads is
[code=c]
#include <stdio.h>
#include "winsock2.h "
#include <stdlib.h>
#include <windows.h>
#include <strsafe.h>
#define BUF_SIZE 255
#define nofthreads 2
typedef struct data
{
char a[36];
}char_36;
// Initialize Winsock.
WSADATA wsaData1,wsaDat a2;
// Create a socket.
SOCKET m_socket1,m_soc ket2;
SOCKADDR_IN client1Service, client2Service;
BOOL wiatall = TRUE;
CRITICAL_SECTIO N cs;
// Send and receive data.
//int bytesSent;
int bytesRecv1,byte sRecv2 = SOCKET_ERROR;
//char sendbuf[32] = "Client: Sending data.";
char recvbuf1[36] = "";
char recvbuf2[36] = "";
DWORD WINAPI workerProc( LPVOID lpParam )
{
char recvbuf1[36] = "";
int status ;
size_t cchStringSize;
int iResult;
TCHAR msgBuf[BUF_SIZE];
iResult = WSAStartup( 0X0202, &wsaData1 );
if ( iResult != NO_ERROR )
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("error at WSASTARTUP"));
m_socket1 = socket( AF_INET, SOCK_STREAM,IPP ROTO_TCP);
if ( m_socket1 == INVALID_SOCKET )
{
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("error at socket"));
WSACleanup();
return(0);
}
client1Service. sin_family = AF_INET;
client1Service. sin_addr.s_addr = inet_addr( "192.168.0. 239" );
client1Service. sin_port = htons(27015);
do
{
status = connect( m_socket1, (SOCKADDR *) &client1Service , sizeof(client1S ervice) );
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("failed to connect"));
WSACleanup();
return(0);
}while(status == SOCKET_ERROR);
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("connected to client 1"));
while( bytesRecv1 == SOCKET_ERROR )
{
bytesRecv1 = recv( m_socket1, recvbuf1, 36, 0 );
if ( bytesRecv1 == 0 || bytesRecv1 == WSAECONNRESET )
{
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("connectio n closed"));
break;
}
if (bytesRecv1 < 0)
return(0);
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("bytes received"));
}
HeapFree(GetPro cessHeap(), 0, recvbuf1);
return(0);
}
DWORD WINAPI ThreadProc( LPVOID lpParam )
{
TCHAR msgBuf[BUF_SIZE];
size_t cchStringSize;
char recvbuf2[36] = "";
int iResult = WSAStartup( 0X0202, &wsaData2 );
if ( iResult != NO_ERROR )
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("error at WSASTARTUP"));
m_socket2 = socket( AF_INET, SOCK_STREAM,IPP ROTO_TCP);
if ( m_socket2 == INVALID_SOCKET )
{
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("error at socket"));
WSACleanup();
return(0);
}
client2Service. sin_family = AF_INET;
client2Service. sin_addr.s_addr = inet_addr( "192.168.0. 091" );
client2Service. sin_port = htons(27016);
do
{
connect( m_socket2, (SOCKADDR *) &client2Service , sizeof(client2S ervice) );
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("failed to connect"));
WSACleanup();
return(0);
}while(connect == SOCKET_ERROR);
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("Connected to client 2"));
while( bytesRecv2 == SOCKET_ERROR )
{
bytesRecv2 = recv( m_socket2, recvbuf2, 36, 0 );
if ( bytesRecv2 == 0 || bytesRecv2 == WSAECONNRESET )
{
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("connectio n closed"));
break;
}
if (bytesRecv2 < 0)
return(0);
StringCchPrintf (msgBuf, BUF_SIZE, TEXT("bytes received"));
}
HeapFree(GetPro cessHeap(), 0, recvbuf2);
return(0);
}
int main()
{
DWORD i=1;
HANDLE hThread,access;
DWORD dwThreadId,Idth read;
int Prio=2;
recvbuf1 = HeapAlloc(GetPr ocessHeap(), HEAP_ZERO_MEMOR Y,sizeof(char_3 6));
recvbuf2 = HeapAlloc(GetPr ocessHeap(), HEAP_ZERO_MEMOR Y,sizeof(char_3 6));
hThread = CreateThread(
NULL, // default security attributes
0, // use default stack size
ThreadProc, // thread function
recvbuf1, // argument to thread function
0, // use default creation flags
NULL); // returns the thread identifier
access = CreateThread(
NULL, // default security attributes
0, // use default stack size
workerProc, // thread function
recvbuf2, // argument to thread function
0, // use default creation flags
NULL); // returns the thread identifier
if (hThread == NULL)
{
ExitProcess(1);
}
if(access == NULL)
{
ExitProcess(2);
}
WaitForMultiple Objects(1,hThre ad,TRUE,INFINIT E);
//WaitForSingleOb ject(hThread,IN FINITE);
CloseHandle(hTh read);
CloseHandle(acc ess);
return(0);
}
[/code]
\..\integration \integration\Cl ient.c(150): error: expression must be a modifiable lvalue
recvbuf2 = HeapAlloc(GetPr ocessHeap(), HEAP_ZERO_MEMOR Y,sizeof(char_3 6));
char_36 i have used
typedef struct data
{
char a[36];
}char_36;
what could the error.
Comment