//只有server在监听这个=。= public void listen_danmu_server() { if (Client.isServer == 0) { return; } while (true) { Package pack = conn.recv(); if (pack == null) { continue; } if (pack.type == "danmu_ask") { /* * header: * [0]filename * * return: * data -> serialized danmulist */ DanmuList danmuList = new DanmuList(); String[] tmp = pack.header[0].Split('\\'); danmuList.readFromFile(tmp[tmp.Length - 1]); MemoryStream stream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, danmuList); byte[] data = stream.ToArray(); Package pack_resp = new Package("danmu_resp"); pack_resp.data = data; Connector conn_resp = Client.find_conn(Client.conn_danmu_client, pack.from); conn_resp.send(pack_resp); } else if (pack.type == "danmu_add") { /* * header: * [0] filename * [1] num * [2] content * * no need to resp */ DanmuList.appendDanmu(Int32.Parse(pack.header[1]), pack.header[2], pack.header[0]); } } }
public override void addDamnu(int num, string content) { //server直接在本地add String[] tmp = BitmapPlayer.address.Split('\\'); DanmuList.appendDanmu(num, content, Local.ref_addr + @"danmu\" + tmp[tmp.Length - 1]); }