|
Thanks. Had just got it working along the same lines.
|
|
|
|
|
In a TCPListener program I've coded, I used the sample codes about TCPListener I found in MSDN Library. But, when I execute this program, the interface doesn't give any response to other events such as clicking buttons, since the continuous loop prevents the other codes to be run. I know that I must do multithreading, but I don't know how to do. . Meanwhile, I also tried to use "BackgroundWorker" component, but it caused the data transfer to fail. Here's sample code, what can I do?
private:
void ServerActivate()
{
try
{
Int32 port = 10000;
IPAddress^ localAddr = IPAddress::Parse(myipBox->Text);
TcpListener^ server = gcnew TcpListener(localAddr,port);
server->Start();
array<byte>^bytes = gcnew array<byte>(256);
String^ data = nullptr;
// Enter the listening loop.
while (true)
{
MessageBox::Show("Ready To Receive!");
TcpClient^ client = server->AcceptTcpClient();
NetworkStream^ stream = client->GetStream();
Int32 i;
while ( i = stream->Read( bytes, 0, bytes->Length ) )
{
data = System::Text::Encoding::ASCII->GetString( bytes, 0, i );
outputBox->Items->Add(data);
data = data->ToUpper();
array<byte>^msg = System::Text::Encoding::ASCII->GetBytes(data);
stream->Write( msg, 0, msg->Length );
}
client->Close();
}
}
catch (SocketException^ e)
{
MessageBox::Show("Socket Exception Occured!");
ShowLoginBox();
}
}
|
|
|
|
|
Nonreturn wrote: what can I do?
I suggest you find a multi-threading tutorial and deal with learning about multi-threading without any socket aspects. Once you understand what is involved in working with mulitple threads then dealing with the socket aspects should be easier.
led mike
|
|
|
|
|
Is there any tutorial u suggest ?
|
|
|
|
|
I own / read the First Edition and strongly recommend it.
Advanced Windows[^]
led mike
|
|
|
|
|
Dear all,
there are something wrong in the last message, the exactly source code is as below:
// 3964PROTOCOL.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <conio.h>
#include <io.h>
#include <fcntl.h>
#include <string.h>
#include <dos.h>
#include <bios.h>
#include "perce.h"
#define ESC 27
void interrupt(*oldvect_ser)();
extern void interrupt int_sio();
extern void restore_8250 (void);
extern void init_8250 (void);
extern void send_tele (char *, short);
extern WORD state, receive_counter, protocol_error;
extern BYTE receive_buffer[];
BYTE choice,sio_eoi;
BOOL receive, autosend;
WORD Com_basis,len;
BYTE send_buffer[BUFFER_MAX];
BYTE tmp_buffer[BUFFER_MAX];
BYTE *mode,*port;
/*=========================================================*/
void warte (void)
{
long i;
/* warte ein wenig */
for (i=0;i<500000;i++) i = i;
}
/*-----------------------------------------------------------------------
* MENUE
*-----------------------------------------------------------------------*/
void menue (void)
{
clrscr();
printf ("\n\n");
printf ("Final Version of KUKAVISION.EXE \n");
printf ("Serial device with 3964R protocol mod. P.S. 08.08.03\n\n");
printf ("[1] send teststring [4] COM 1 \n");
printf ("[2] getNum [5] COM 2 \n");
printf ("[3] getDat [6] reset protocol\n");
printf (" [ESC] quit\n");
printf ("Aktueller Port: %s\n",port);
printf ("Mode : %s\n", mode);
printf ("Number of elements: %d\n",numEl);
printf ("Element index: %d\n",elementIndex);
printf ("Element Data: %s\n---------\n", &send_buffer[0]);
}
/******************************
SEND_TELEGRAM
*******************************/
void send_telegram (BYTE *buffer)
{
if ((len = strlen (buffer)) > 0)
{
send_tele (buffer, len);
warte ();
warte ();
warte ();
if (state == E1)
{
state = RUHE;
protocol_error=2;
}
else protocol_error=6;
}
/*********************
MONITORING
**********************/
void monitoring (void)
{
short i;
printf("-> : ");
for (i=0;i<receive_counter;i++)
{
="" if(isprint(receive_buffer[i]))="" printf("%c",="" receive_buffer[i]);
="" else="" printf("0x%x",="" }=""
="" printf("\n");
="" receive="FALSE;
" }
="" *--------------------------------------------------------------------------
="" *="" function:="" main
="" hauptprogramm
="" *--------------------------------------------------------------------------*="" void="" main="" ()
="" int="" sio_int_nr,i;
="" j;="" sake="" char="" *fields;
="" bool="" quit="FALSE;
" com_basis="0x3F8" ;="" *standard-port="" com1="" sio_int_nr="0xC;" *irq*="" sio_eoi="0x
" port="COM 2" ;
="" oldvect_ser="getvect(sio_int_nr);
" setvect(sio_int_nr,int_sio);
="" state="RUHE;
" choice="protocol_error" =="" 0;
="" false;
="" mode="ready" elementindex="0;
" init_8250="" ();
="" menue="" do
="" if="" (bioskey(1))
="" switch="" (choice)
="" case="" esc:="" ganz="" raus="" break;
="" '1':="" send="" send_telegram="" (&send_buffer[0]);
="" '2':="" getnum="" strcpy(&receive_buffer[0],"getnum");
="" '3':="" getdat="" strcpy(&receive_buffer[0],"getdat");
="" '4':="" irq="" 4="" '5':="" com2="" '6':="" reset="" default:;
="" (receive)
="" monitoring="" ();="" (strcmp("getnum",&receive_buffer[0])="=" 0)="" printf("getnum="" erhalten\n");
="" if(="" imaqreadfile()="=" -1)
="" printf("fehler="" beim="" lesen="" der="" datei\n");
="" numel="imaqGetNbElements();" menue();
="" (strcmp("getdat",&receive_buffer[0])="=" if(elementindex=""> numEl){
printf("Keine Daten mehr vorhanden\n");
for (i=0;i<buffer_max;i++)
sprintf(&send_buffer[i],"\0");=""
="" imaqclose();
="" }
="" else="" {
="" dataerr="imaqGetData(elementIndex," send_buffer);
="" if="" (dataerr="=0)
" send_telegram="" (&send_buffer[0]);="" menue();
="" elementindex++;
="" (protocol_error)
="" switch="" case="" 1:
="" printf("\ncrc-error="" (nak-="">) !!\n");
break;
case 2:
printf("\nno response (DLE) !!\n");
break;
case 3:
printf("\nno send quitt (DLE) !!\n");
break;
case 4:
printf("\nReceive buffer overflow !!\n");
break;
case 5:
printf("\nrepeating telegram (->NAK) !!\n");
break;
case 6:
printf("\nno teststring defined\n");
break;
case 7:
printf("\nSTX\n");
break;
default:;
}
protocol_error = 0;
}
} while (!quit);
restore_8250 ();
setvect(sio_int_nr,oldvect_ser);
}
|
|
|
|
|
|
Dear all,
Now I have a problem with a small program Win32 console application for communication via RS232 with 3964 protocol, so anybody please help me compile this source code or show me what is wrong:
// 3964PROTOCOL.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <conio.h>
#include <io.h>
#include <fcntl.h>
#include <string.h>
#include <dos.h>
#include <bios.h>
#include "perce.h"
#define ESC 27
void interrupt(*oldvect_ser)();
extern void interrupt int_sio();
extern void restore_8250 (void);
extern void init_8250 (void);
extern void send_tele (char *, short);
extern WORD state, receive_counter, protocol_error;
extern BYTE receive_buffer[];
BYTE choice,sio_eoi;
BOOL receive, autosend;
WORD Com_basis,len;
BYTE send_buffer[BUFFER_MAX];
BYTE tmp_buffer[BUFFER_MAX];
BYTE *mode,*port;
/*=========================================================*/
void warte (void)
{
long i;
/* warte ein wenig */
for (i=0;i<500000;i++) i = i;
}
/*-----------------------------------------------------------------------
* MENUE
*-----------------------------------------------------------------------*/
void menue (void)
{
clrscr();
printf ("\n\n");
printf ("Final Version of KUKAVISION.EXE \n");
printf ("Serial device with 3964R protocol mod. P.S. 08.08.03\n\n");
printf ("[1] send teststring [4] COM 1 \n");
printf ("[2] getNum [5] COM 2 \n");
printf ("[3] getDat [6] reset protocol\n");
printf (" [ESC] quit\n");
printf ("Aktueller Port: %s\n",port);
printf ("Mode : %s\n", mode);
printf ("Number of elements: %d\n",numEl);
printf ("Element index: %d\n",elementIndex);
printf ("Element Data: %s\n---------\n", &send_buffer[0]);
}
/******************************
SEND_TELEGRAM
*******************************/
void send_telegram (BYTE *buffer)
{
if ((len = strlen (buffer)) > 0)
{
send_tele (buffer, len);
warte ();
warte ();
warte ();
if (state == E1)
{
state = RUHE;
protocol_error=2;
}
else protocol_error=6;
}
/*********************
MONITORING
**********************/
void monitoring (void)
{
short i;
printf("-> : ");
for (i=0;i<receive_counter;i++)
{
="" if(isprint(receive_buffer[i]))="" printf("%c",="" receive_buffer[i]);
="" else="" printf("0x%x",="" }=""
="" printf("\n");
="" receive="FALSE;
" }
="" *--------------------------------------------------------------------------
="" *="" function:="" main
="" hauptprogramm
="" *--------------------------------------------------------------------------*="" void="" main="" ()
="" int="" sio_int_nr,i;
="" j;="" sake="" char="" *fields;
="" bool="" quit="FALSE;
" com_basis="0x3F8" ;="" *standard-port="" com1="" sio_int_nr="0xC;" *irq*="" sio_eoi="0x
" port="COM 2" ;
="" oldvect_ser="getvect(sio_int_nr);
" setvect(sio_int_nr,int_sio);
="" state="RUHE;
" choice="protocol_error" =="" 0;
="" false;
="" mode="ready" elementindex="0;
" init_8250="" ();
="" menue="" do
="" if="" (bioskey(1))
="" switch="" (choice)
="" case="" esc:="" ganz="" raus="" break;
="" '1':="" send="" send_telegram="" (&send_buffer[0]);
="" '2':="" getnum="" strcpy(&receive_buffer[0],"getnum");
="" '3':="" getdat="" strcpy(&receive_buffer[0],"getdat");
="" '4':="" irq="" 4="" '5':="" com2="" '6':="" reset="" default:;
="" (receive)
="" monitoring="" ();="" (strcmp("getnum",&receive_buffer[0])="=" 0)="" printf("getnum="" erhalten\n");
="" if(="" imaqreadfile()="=" -1)
="" printf("fehler="" beim="" lesen="" der="" datei\n");
="" numel="imaqGetNbElements();" menue();
="" (strcmp("getdat",&receive_buffer[0])="=" if(elementindex=""> numEl){
printf("Keine Daten mehr vorhanden\n");
for (i=0;i<buffer_max;i++)
sprintf(&send_buffer[i],"\0");=""
="" imaqclose();
="" }
="" else="" {
="" dataerr="imaqGetData(elementIndex," send_buffer);
="" if="" (dataerr="=0)
" send_telegram="" (&send_buffer[0]);="" menue();
="" elementindex++;
="" (protocol_error)
="" switch="" case="" 1:
="" printf("\ncrc-error="" (nak-="">) !!\n");
break;
case 2:
printf("\nno response (DLE) !!\n");
break;
case 3:
printf("\nno send quitt (DLE) !!\n");
break;
case 4:
printf("\nReceive buffer overflow !!\n");
break;
case 5:
printf("\nrepeating telegram (->NAK) !!\n");
break;
case 6:
printf("\nno teststring defined\n");
break;
case 7:
printf("\nSTX\n");
break;
default:;
}
protocol_error = 0;
}
} while (!quit);
restore_8250 ();
setvect(sio_int_nr,oldvect_ser);
}
|
|
|
|
|
1. Use <pre> tags while posting code.
2. Post only relevent code, and describe what problem you are facing , nobody is going to see huge amount of code for you.
3. Ask is correct fourm. In this case its VC++[^].
Prasad
Notifier using ATL | Operator new[],delete[][^]
|
|
|
|
|
I have a program where u login to a lobby for games but theres no lobby or the games i need help.
I can post the code if needed
|
|
|
|
|
|
|
We have great big lumps of it round the back
led mike
|
|
|
|
|
Is this a C++/CLI question ? Are you saying you found source code onthe web and can't make it work ? Do you know how to program ?
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Yes its a c++ question i am trying to learn how to code.
i got all of the parts i just need something that connects the programs
together.
like this is how i want it to work.
Login menu
goes to a game lobby where you are able to select the games i have made.
I just need help. Connecting them together.
|
|
|
|
|
I'm currently using 'fgets' to read a file like the sample below, and need to do some processing on it.....My first question is, is there a way for me to read the X,Y & Z data and store them into a multi-dimensional array? Secondly, the number of entries for the X,Y & Z data can vary from one file to another, so if an array is to be used, it has to be able to be sized dynamically.
using C++, Visual Studio 6.0
Any help would be greatly apperciated, thanks:
Sample File Data:
Name: Test
Date: mm/dd/yyyy
X Y Z
404.72 1064.42 60
402.224 1064.58 60
399.728 1064.75 60
Description: This is a test
//---------------------------------------------------------------------------------------------------------
Here is the code I have so far:
CFile importFile;
importFile.Open(fullName, CFile::modeRead);
CArchive ar (&importFile, CArchive::load);
if(!ar.ReadString(strLine))
{
importFile.Close();
return;
}
do // Repeat while there are lines in the file left to process
{
if( strLine.GetLength() == 0)
{ continue;
}
CString strText = strLine;
if(strText.GetLength() != 0)
MessageBox(strText,NULL,NULL);
}while(ar.ReadString(strLine));
//---------------------------------------------------------------------------------------------------------
|
|
|
|
|
Wrong forum. Ask in VC++[^] forum.
|
|
|
|
|
Wrong forum and same question
|
|
|
|
|
I want to use the Visual studio C++ 2005, but for standard c\c++ code, can I do it, can I turn the mixed code off, I want only native C\C++ code to be compiled and used, I don't want at future to use .net assemblies.
|
|
|
|
|
Yes, you can build native apps with 2005 (and 2003 and 2002)
|
|
|
|
|
|
This code runs fine.
When it's run, output says Struct A's size is 16 and Struct B's size is 12, even though
both contain 2 ints and 2 chars each.
Can someone tell me how the heck that is possible?
#include "stdafx.h"
#include <iostream>
using namespace std;
struct
{
char c1;
int i1;
char c2;
int i2;
}a;
struct
{
int i1;
int i2;
char c1;
char c2;
}b;
int main()
{
cout<<"sizeof struct A " <<sizeof(a);
cout<<"sizeof struct B " <<sizeof(b);
getchar();
return(0);
}
ASP - AJAX is SEXY. PERIOD.
|
|
|
|
|
Wrong forum. Ask in VC++[^] forum instead.
|
|
|
|
|
Bulky Fellow wrote: What rubbish? Does that code look anything like VC++ to you? I guess
one look at the
first include must have fooled you. Did you even bother reading the
code?
If you can't solve something (and also give wrong directions like a
jackass), just
shut up and sit still instead of blabbering.
I'm not sure, why you have deleted this post ? If you think, this is right forum for this question, why you have posted it in VC++ fourm again.
You have not read sticky post by Chris[^] , before posting this question.
I wanted you to get good answers, thats why was directing you to VC++ forums.
|
|
|
|
|
Hi,
I have a Client-Server Application. I am trying to get the IP address of the machine on which the client is running on at the Server Side. I want to store the IP address at the Server side and use it for future processing.
How to get the IP address of the client machine.
I am using VC++ 6.0
Thanks n regards
-- modified at 4:49 Monday 26th February, 2007
|
|
|
|
|