Hi Ashish
Here is a sample you can work with:
// Project 1
public class Watcher {
public static void Main() {
try {
PortWatcher watcher = new PortWatcher();
watcher.Message Received += new
MessageReceived EventHandler(Pr ocessMessage);
}
catch(Exception exception) {
Console.Write(e xception.Messag e);
}
}
public static void ProcessMessage( object sender, MessageReceived EventArgs
e) {
StreamReader reader = new System.IO.Strea mReader(e.Data) ;
Console.Write(r eader.ReadToEnd ());
}
}
// Project 2
public delegate void MessageReceived EventHandler(ob ject sender,
MessageReceived EventArgs e);
public class PortWatcher {
private event EventHandler Initialize;
private PortWatcher() {
Initialize += new EventHandler(On Initialize);
OnIntialize(thi s, new EventArgs());
}
private void WaitForConnecti on() {
TcpListener listener = new TcpListener(IPA ddress.Any, 1234);
Stream data = null;
Socket socket = null;
listener.Start( );
socket = listener.Accept Socket();
try {
while(true) {
byte[] buffer = new byte[this.m_buffer];
int byteSize = 0;
byteSize = socket.Receive( buffer);
data = new MemoryStream(bu ffer, 0, byteSize);
OnMessageReceiv ed(this, new MessageReceived EventArgs(data) );
}
catch {
throw;
}
finally {
if(data != null) data.Close();
if(socket != null) socket.Close();
}
}
public void OnInitialize(ob ject sender, EventArgs e) {
WaitForConnecti on();
}
public void OnMessageReceiv d(object sender, MessageReceived EventArgs e) {
if(this.Message Received != null) {
this.MessageRec eived(this, e);
}
}
}
public class MessageReceived EventArgs : EventArgs {
Stream m_data = null;
public MessageReceived EventArgs(Strea m data) {
this.m_data = data;
}
public Stream Data {
get {
return m_data;
}
}
}
"Ashish Das" wrote:
can you post a working code.
"Craig" <Cr***@discussi ons.microsoft.c om> wrote in message
news:3C******** *************** ***********@mic rosoft.com... Hi
I listen on a port, when data is received I raise an event
(OnMessageRecei ved) in the while loop as follows:
private void WaitForConnecti on() {
TcpListener listener = new TcpListener(IPA ddress.Any, 1234);
Stream data = null;
Socket socket = null;
listener.Start( );
socket = listener.Accept Socket();
try {
while(true) {
byte[] buffer = new byte[this.m_buffer];
int byteSize = 0;
byteSize = socket.Receive( buffer);
data = new MemoryStream(bu ffer, 0, byteSize);
OnMessageReceiv ed(this, new MessageReceived EventArgs(data) );
}
}
catch {
throw;
}
finally {
if(data != null) data.Close();
if(socket != null) socket.Close();
}
}
The delegate assigned to the OnMessageReceiv ed doesn't receive the event
notification, no exception is thrown in the WaitForConnecti on method.
Does
anyone have any suggestions as to why?
Craig