Her er et eksempel. Det er skrevet i notepad og jeg har ikke testet det - der mangler jo også bla. kode der bruger de modtagne chars til noget samt en lille detalje som eks. en server i den anden ende. ;)
Nedenstående forudsætter at du har en Socket der har forbindelse til dit C++ program.
Yderligere forudsætter det at du har et byte array i den klasse hvor du pladserer nedenstående kode.
class foo
{
private byte[] byteBuffer;
private Socket sck;
public foo()
{
string server = "
www.server.dk"; // Server du vil tilslutte til.
int port = 2000; // Port på serveren.
byteBuffer = new byte[1024]; // Buffer størrelse = 1 KB.
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// Hvis du skal connecte til en server så er koden her...
IPAddress hostadd = Dns.Resolve(server).AddressList[0];
IPEndPoint EPhost = new IPEndPoint(hostadd, port);
sck.Connect(EPHost);
if(!sck.Connected)
{
System.Windows.Forms.MessageBox.Show("Serveren ignorerer dig.. prøv liiige at checke om det er den rette server/port.");
return;
}
// Ellers må du lige se efter BeginAccept og EndAccept metoderne i Doc'en.
}
public void ReceiveData()
{
sck.BeginReceive(byteBuffer, 0, byteBuffer.Length, SocketFlags.None, new AsyncCallback(ProcessData), sck);
}
private void ProcessData(IAsyncResult ar)
{
int bytesRead = sck.EndReceive(ar);
if(bytesRead == 0)
return; // Forbindelsen blev afbrudt.
char[] chars = Encoding.ASCII.GetChars(byteBuffer, 0, bytesRead);
// nu indeholder chars de chars som blev sendt fra dit C++ program.
ReceiveData(); // Og hvis der skal modtages flere data,
// så kører du bare ReceiveData(); her... ellers
// kan du jo fjerne den sidste linje.
}
}