[Mono-list] my first c# program doesn't work :-(

Candide Kemmler candide@urbanium.tv
Tue, 16 Apr 2002 22:45:21 +0200


Hi,

To begin with, could somebody please tell me how to subscribe to this 
list ? I haven't found any hints about this on the go-mono website.

Have tried to make this incredibly simple program work, without success. 
No, sorry, this one works, but I had liked to have to threaded version 
run, which should if the commented part was enabled:

//        Connection con = new Connection ();
//        con.socket = s;
//        con.start ();

I keep having the following error:

Error..... #0: 0x0000b ldfld		in .Connection::handleConnection ()

Is it my fault or your fault, :-) ?

Apparently, everything collapses when trying to access the "socket" ivar 
in the Connection class...
Any help greatly appreciated.

Candide Kemmler


using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;

class WelcomeCSS
{
   public static void Main () {
     new WelcomeCSS ();
   }

   public WelcomeCSS () {
     try {
       IPAddress ipAd = IPAddress.Parse("127.0.0.1"); //use local m/c IP
address, and use the same in the client

       /* Initializes the Listener */
       TcpListener myList=new TcpListener ( ipAd, 9705 );
       /* Start Listeneting at the specified port */
       myList.Start();
       Console.WriteLine("The server is running at port 9705...");
       Console.WriteLine("Waiting for a connection.....");

       while ( true ) {
         Socket s = myList.AcceptSocket ();
//        Connection con = new Connection ();
//        con.socket = s;
//        con.start ();
         handleConnection ( s );
       }
     } catch (Exception e) {
       Console.WriteLine("Error..... " + e.StackTrace);
     }
   }

   public void handleConnection (Socket socket) {
     try {
       Console.WriteLine("Connection accepted");
       NetworkStream networkStream = new NetworkStream(socket);
       Console.WriteLine("Created NetworkStream" );
       StreamWriter streamwriter = new StreamWriter(networkStream) ;
       Console.WriteLine("Created StreamWriter");
       StreamReader streamreader = new StreamReader(networkStream) ;
       Console.WriteLine("Created StreamReader");
       Console.WriteLine("created new buffer");
       if ( socket.Connected ) {
         byte [] b = new byte [24];
         int bytes_read = 0;
         while ( (bytes_read=socket.Receive ( b )) != -1 ) {
           Console.WriteLine ( "haha, reading..." );
           socket.Send ( b );
         }
       } else {
         Console.WriteLine ( "Socket is null" );
       }
     } catch (Exception e) {
       Console.WriteLine("Error..... " + e.StackTrace);
     }
   }

}

   public class Connection {

     private Socket socket;

     public Connection () {
       socket = null;
     }

     public void start () {
       Thread handlerThread = new  Thread ( new  ThreadStart (
handleConnection ) );
       handlerThread.Start ();
     }

     public void handleConnection () {
       try {
         Console.WriteLine("Connection accepted");
         NetworkStream networkStream = new NetworkStream(socket);
         Console.WriteLine("Created NetworkStream" );
         StreamWriter streamwriter = new StreamWriter(networkStream) ;
         Console.WriteLine("Created StreamWriter");
         StreamReader streamreader = new StreamReader(networkStream) ;
         Console.WriteLine("Created StreamReader");
         Console.WriteLine("created new buffer");
         if ( socket.Connected ) {
           Console.WriteLine ( "Socket is not null" );
           string s = streamreader.ReadLine ();
           Console.WriteLine ( "server message: " + s );

           streamwriter.WriteLine ( s );
           Console.WriteLine("\nSent Acknowledgement");

           /* clean up */
           socket.Close();
         } else {
           Console.WriteLine ( "Socket is null" );
         }
       } catch (Exception e) {
         Console.WriteLine("Error..... " + e.StackTrace);
       }
     }
   }