I'm having trouble with a network chat based server I'm working on in
C#, It works find during the reads, but as soon as I start sending back
data my reads from that point on are corrupted. If there's any advice,
it'd be greatly appreciated :)
// created on 11/07/2004 at 19:26
using System;
using System.Net.Sock ets;
class ClientTCP {
private Socket socket;
private NetworkStream networkStream;
private byte[] buffer;
private AsyncCallback callbackRead;
private AsyncCallback callbackWrite;
private static int numofSockets = 0;
private int SocketNumber;
private Player player;
public ClientTCP(Socke t socketForClient , int ObjectNumber)
{
socket = socketForClient ;
networkStream = new NetworkStream(s ocket);
buffer = new byte[256];
callbackRead = new AsyncCallback(t his.OnReadCompl ete);
callbackWrite = new AsyncCallback(t his.OnWriteComp lete);
SocketNumber = ObjectNumber;
ObjectStores.cl ienttcp[ObjectNumber] = this;
ObjectStores.pl ayer[ObjectNumber] = player = new Player(this,
ObjectNumber);
Console.WriteLi ne("TCP Connection!");
ReadStream();
}
private void OnReadComplete( IAsyncResult ar)
{
int bytesRead = networkStream.E ndRead(ar);
String s = System.Text.Enc oding.ASCII.Get String (buffer, 0, bytesRead);
Console.WriteLi ne("Socket #{1}: Bytes Read: {0}\nData: {2}",
bytesRead, SocketNumber, s);
player.Recieve( s);
ReadStream();
}
private void OnWriteComplete ( IAsyncResult ar )
{
networkStream.E ndWrite(ar);
Array.Clear(buf fer, 0, buffer.Length);
ReadStream();
}
public void Send(string s)
{
s += "\n\n";
buffer = System.Text.Enc oding.ASCII.Get Bytes(s);
networkStream.B eginWrite(buffe r, 0, s.Length, callbackWrite, null);
}
private void ReadStream()
{
networkStream.B eginRead (buffer, 0, buffer.Length, callbackRead, null);
}
}
C#, It works find during the reads, but as soon as I start sending back
data my reads from that point on are corrupted. If there's any advice,
it'd be greatly appreciated :)
// created on 11/07/2004 at 19:26
using System;
using System.Net.Sock ets;
class ClientTCP {
private Socket socket;
private NetworkStream networkStream;
private byte[] buffer;
private AsyncCallback callbackRead;
private AsyncCallback callbackWrite;
private static int numofSockets = 0;
private int SocketNumber;
private Player player;
public ClientTCP(Socke t socketForClient , int ObjectNumber)
{
socket = socketForClient ;
networkStream = new NetworkStream(s ocket);
buffer = new byte[256];
callbackRead = new AsyncCallback(t his.OnReadCompl ete);
callbackWrite = new AsyncCallback(t his.OnWriteComp lete);
SocketNumber = ObjectNumber;
ObjectStores.cl ienttcp[ObjectNumber] = this;
ObjectStores.pl ayer[ObjectNumber] = player = new Player(this,
ObjectNumber);
Console.WriteLi ne("TCP Connection!");
ReadStream();
}
private void OnReadComplete( IAsyncResult ar)
{
int bytesRead = networkStream.E ndRead(ar);
String s = System.Text.Enc oding.ASCII.Get String (buffer, 0, bytesRead);
Console.WriteLi ne("Socket #{1}: Bytes Read: {0}\nData: {2}",
bytesRead, SocketNumber, s);
player.Recieve( s);
ReadStream();
}
private void OnWriteComplete ( IAsyncResult ar )
{
networkStream.E ndWrite(ar);
Array.Clear(buf fer, 0, buffer.Length);
ReadStream();
}
public void Send(string s)
{
s += "\n\n";
buffer = System.Text.Enc oding.ASCII.Get Bytes(s);
networkStream.B eginWrite(buffe r, 0, s.Length, callbackWrite, null);
}
private void ReadStream()
{
networkStream.B eginRead (buffer, 0, buffer.Length, callbackRead, null);
}
}