Socket med Flash
Jeg skal kommunikere mellem Flash og C#, og jeg har fundet denne socket, der i hvert fald kan modtage data: http://www.gnu.org/projects/dotgnu/pnetlib-doc/System/Net/Sockets/Socket.htmlMen problemet er, at den for det første kun kan modtage data én gang, at den har en timeout til connection og at jeg ikke kan få den til at sende data tilbage til Flash.
Men jeg har også fået sat denne kode sammen, som virker næsten efter hensigten. Problemet er, at jeg skal angive længden af det data, jeg sender og modtager, og det giver problemer, når jeg sender tilbage til Flash, og gør det upraktisk at arbejde med i C#.
Men jeg kan ikke rigtigt finde ud af at sammensætte de to koder til min brug. Således ser min kode ud:
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Sock
{
class Program
{
private static IPAddress myIP = IPAddress.Parse("127.0.0.1");
private static IPEndPoint myServer;
private static Socket socket;
private static Socket accSocket;
private static UInt16 maxRecv;
static void Main(string[] args)
{
maxRecv = 1024;
btc();
}
private static void btc()
{
try
{
Thread thread = new Thread(new ThreadStart(accp));
thread.Start();
}
catch (Exception ee)
{
Console.WriteLine(ee.Message);
}
}
private static void accp()
{
myServer = new IPEndPoint(myIP, Int32.Parse("20000"));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(myServer);
socket.Listen(50);
while (true)
{
try
{
accSocket = socket.Accept();
if (accSocket.Connected)
{
Thread thread = new Thread(new ThreadStart(round));
thread.Start();
}
}
catch (Exception ee)
{
Console.WriteLine(ee.Message);
}
}
}
private static void round()
{
Byte[] rec = new Byte[maxRecv];
NetworkStream acceptStream = new NetworkStream(accSocket);
acceptStream.Read(rec, 0, rec.Length);
String recMessage = System.Text.Encoding.Default.GetString(rec);
rec = new Byte[maxRecv];
Console.WriteLine(recMessage);
NetworkStream acceptStreamSend = new NetworkStream(accSocket);
string str = "[" + recMessage + "]";
Byte[] bytesSend = new Byte[maxRecv];
bytesSend = System.Text.Encoding.Default.GetBytes(str);
acceptStreamSend.Write(bytesSend, 0, bytesSend.Length);
}
}
}
På forhånd mange tak.
