C# 从Flex(XMLSocket)连接到.NET(Socket)的数据问题

C# 从Flex(XMLSocket)连接到.NET(Socket)的数据问题,c#,apache-flex,sockets,C#,Apache Flex,Sockets,我正在为我的游戏开发一个聊天/IM系统(用Flex编写),希望通过套接字将它连接到我的服务器(用C#编写) 因此,我已经使用Flex上的XMLSocket和服务器端的Socket成功地将它们连接在一起,客户端获得连接的事件,正确地发送数据,但是当我尝试将数据从服务器发送回客户端时,什么也没有发生(即使BeginSend回调显示整个缓冲区都已发送) 客户: private var hostName:String = "localhost"; private var port:uint =

我正在为我的游戏开发一个聊天/IM系统(用Flex编写),希望通过套接字将它连接到我的服务器(用C#编写)

因此,我已经使用Flex上的XMLSocket和服务器端的Socket成功地将它们连接在一起,客户端获得连接的事件,正确地发送数据,但是当我尝试将数据从服务器发送回客户端时,什么也没有发生(即使BeginSend回调显示整个缓冲区都已发送)

客户:

private var hostName:String = "localhost";
    private var port:uint = 4444;
    private var socket:XMLSocket;
    public var app:DotNETServerTest; 

    public function DotNetSocketExample() {
        socket = new XMLSocket();
        configureListeners(socket);
        socket.connect(hostName, port);
    }

    public function send(data:Object):void {
        socket.send(data);
    }

    public function disconnect():void {
        socket.close();
        closeHandler(null);
    }      

    private function configureListeners(dispatcher:IEventDispatcher):void {
        dispatcher.addEventListener(Event.CLOSE, closeHandler);
        dispatcher.addEventListener(Event.CONNECT, connectHandler);
        dispatcher.addEventListener(DataEvent.DATA, dataHandler);
    }

    private function closeHandler(event:Event):void {
        trace("closeHandler: " + event);
        app.send_btn.enabled = false;
        app.disconnect_btn.enabled = false;
    }

    private function connectHandler(event:Event):void {
        trace("connectHandler: " + event);
        app.send_btn.enabled = true;
        app.disconnect_btn.enabled = true;
    }

    private function dataHandler(event:DataEvent):void {
        trace("dataHandler: " + event);
        Alert.show(event.data);
    }
服务器(仅特定部分):

//这是回调函数,连接客户端时将调用该函数
客户端连接上的公共静态无效(IAsyncResult asyn)
{
尝试
{
SocketClient NewConnection=newsocketclient(SocketServer.EndAccept(asyn));
//这是我试图发送的测试消息
SendMessageTo(新连接“”);
Clients.Add(NewConnection);
WaitForData(新连接);
LogMessage(NewConnection,“Client{0}connected”,Clients.Count);
BeginAccept(新的AsyncCallback(OnClient连接),null);
}
捕获(ObjectDisposedException)
{
日志消息(“OnClient连接:套接字已关闭”);
}
捕获(SocketException se)
{
控制台写入线(se消息);
}
}
内部静态void SendMessageTo(SocketClient客户端,字符串数据)
{
byte[]byteData=Encoding.ASCII.GetBytes(数据);
SendMessageTo(客户端,字节数据);
}
内部静态void SendMessageTo(SocketClient客户端,字节[]byteData)
{
尝试
{
client.socket.BeginSend(byteData,0,byteData.Length,SocketFlags.None,新异步回调(SendCallback),client);
}
捕获(例外e)
{
LogMessage(客户端,“向客户端发送数据时出错:{0}”,e.Message);
}
}
内部静态void SendCallback(IAsyncResult ar)
{
//从异步状态对象检索套接字。
SocketClient处理程序=(SocketClient)ar.AsyncState;
尝试
{
int bytesSent=handler.socket.EndSend(ar);
}
捕获(例外e)
{
日志消息(处理程序,e.Message);
}
}
请帮忙!
谢谢,Ron发现了问题-我没有在每次发送结束时发送\0

更改为:

byte[] byteData = Encoding.ASCII.GetBytes(Data);
client.socket.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(SendCallback), client);
为此:

byte[] byteData = Encoding.ASCII.GetBytes(Data + "\0");
client.socket.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(SendCallback), client);
byte[] byteData = Encoding.ASCII.GetBytes(Data + "\0");
client.socket.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(SendCallback), client);