OPTÉ POR DEJAR ESTE TOPIC
Buenas, estoy creando un Cliente via Sockets en AS3, y su respectivo servidor en C#...
Funciona bien solo que el servidor C# solo lee la primera entrada que le envía el cliente al iniciar la conexión cliente servidor.
Luego el Cliente si envía packets, el servidor ya no lo escucha...
Y aquí les dejo el código:
ENTRADA PRINCIPAL DEL PROGRAMA EN C# CONSOLA
SERVER.CS
// RESPONDO EL XML YA QUE EL SOCKET AS3 NECESITA EL ARCHIVO XML PARA PASAR POR EL PUERTO Y/O DOMINIO ASIGNADO EN EL XML...
CLIENTS.CS
MESSAGES.CS
CLIENTE AS3:
Quisiera saber que me recomendarían para este tipo de proyectos! Se acepta cualquier sugerencia... Saludos!
· Tema movido C# no es parte de C/C++, es .NET
>aquí las reglas del foro
-Engel Lex
Buenas, estoy creando un Cliente via Sockets en AS3, y su respectivo servidor en C#...
Funciona bien solo que el servidor C# solo lee la primera entrada que le envía el cliente al iniciar la conexión cliente servidor.
Luego el Cliente si envía packets, el servidor ya no lo escucha...
Y aquí les dejo el código:
ENTRADA PRINCIPAL DEL PROGRAMA EN C# CONSOLA
Código [Seleccionar]
using System;
using SnapServer.SaptConn.Network;
using System.Net.Sockets;
using System.Net;
namespace SaptServer
{
class Program
{
public const int Port = 8888;
public static string[] ClientsOnline;
static void Main(string[] args)
{
Server server = new Server();
Server.serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Server.serverSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
Server.serverSocket.Listen(999);
Console.WriteLine(".:|_serVerYork_|:.");
server.Start();
}
}
}
SERVER.CS
Código [Seleccionar]
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace
{
class Server
{
public static Socket serverSocket, clientSocket;
private byte[] buffer;
public void Start()
{
clientSocket = serverSocket.Accept();
buffer = new byte[clientSocket.ReceiveBufferSize];
while (clientSocket.Available == 0)
{
receiveData();
}
}
private void receiveData()
{
try
{
int received = clientSocket.Receive(buffer);
if (received != 0)
{
Array.Resize(ref buffer, received);
string receivedMsg = UTF8Encoding.UTF8.GetString(buffer);
Array.Resize(ref buffer, clientSocket.ReceiveBufferSize);
if(receivedMsg.Contains("policy-file-request"))
{
if(Clients.OrganizarClientes(Convert.ToString(clientSocket.LocalEndPoint)))
{
sendMsg("<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"8888\" /></cross-domain-policy>");
clientSocket.Close();
Start();
} else {
Console.WriteLine("Nuevo cliente: " + clientSocket.LocalEndPoint);
sendMsg("<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"8888\" /></cross-domain-policy>");
clientSocket.Close();
Start();
}
} else {
Console.WriteLine("Cliente_" + clientSocket.LocalEndPoint + ": " + receivedMsg);
Messages.Messages.ClasificarMsg(receivedMsg);
Start();
}
} else { return; }
} catch (Exception ex){}
receiveData();
}
public static void sendMsg(string data)
{
clientSocket.Send(UTF8Encoding.UTF8.GetBytes(data));
}
}
}
// RESPONDO EL XML YA QUE EL SOCKET AS3 NECESITA EL ARCHIVO XML PARA PASAR POR EL PUERTO Y/O DOMINIO ASIGNADO EN EL XML...
CLIENTS.CS
Código [Seleccionar]
using System;
using System.Collections.Generic;
namespace
{
public class Clients
{
public static bool OrganizarClientes(string data)
{
string[] tmpStr = data.Split(':');
List<string> tmpList = new List<string>();
bool tmpBool = false;
try
{
for (int i = 0; i < Program.ClientsOnline.Length; i++)
{
tmpList.Add(Program.ClientsOnline[i]);
if (!(Program.ClientsOnline[i] == tmpStr[0])){ tmpBool = false; } else { tmpBool = true; break; }
}
}catch(Exception ex) { tmpBool = false; }
if (tmpBool)
{
return true;
}else { tmpList.Add(tmpStr[0]); Program.ClientsOnline = tmpList.ToArray(); return false; }
}
}
}
MESSAGES.CS
Código [Seleccionar]
using System;
namespace
{
class Messages
{
public static void ClasificarMsg(string data)
{
switch (data)
{
case ("Conexión establecida"):
Server.sendMsg("GoToLogin");
Console.WriteLine("Server: " + "GoToLogin");
break;
//else else...
}
}
}
}
CLIENTE AS3:
Código [Seleccionar]
var newSocket:Socket; // <- El tipo de Socket en AS3
newSocket = new Socket("IP", 8888);
newSocket.addEvent....
....
Quisiera saber que me recomendarían para este tipo de proyectos! Se acepta cualquier sugerencia... Saludos!
· Tema movido C# no es parte de C/C++, es .NET
>aquí las reglas del foro
-Engel Lex