[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);
}
}
}