public static void SendFile(byte[] ext, byte[] sndfile)//TCP , SendPhoto { if (ready) { NetworkStream ns = new NetworkStream(ClientSocket); byte[] extsend = ext; ns.Write(ext, 0, ext.Length); ChatContent.Add("[" + name + "] 已發送副檔名.\n"); byte[] buffer = sndfile; ns.Write(BitConverter.GetBytes(sndfile.Length), 0, 4); ns.Write(buffer, 0, buffer.Length); ChatContent.Add("[" + name + "] 已發送檔案.\n"); } else { ChatContent.Add("[Error**]未連線\r\n"); } }
public static int Connect(byte[] sendname, string ip)//TCP { try { if (!ready) { if (LoopConnect(ip) == ClientStatus.Connected) { ready = true; } else { return(-1); } } ClientSocket.Send(sendname); ChatContent.Add("[" + name + "] 已與伺服器連線\r\n"); return(1); } catch { return(-1); } }
private static void ReceiveLoop() { _master.Clear(); _read.Clear(); _master.Add(ClientSocket); _master.Add(uc.Client); while (true) { _read = new ArrayList(_master); try { Socket.Select(_read, null, null, 1000); for (int i = 0; i < _read.Count; i++) { if (_read[i] == uc.Client) { byte[] recbyte = uc.Receive(ref ipep_c); string textrec = Encoding.Default.GetString(recbyte); ChatContent.Add(textrec); } else { if (ready) { try { NetworkStream ns = new NetworkStream(ClientSocket); byte[] extbuf = new byte[3]; byte[] sizebuf = new byte[4]; if (!alreadyrecving) { ReadAllData(ns, extbuf); string extension = Encoding.Default.GetString(extbuf); ReadAllData(ns, sizebuf);//1st get size int count = BitConverter.ToInt32(sizebuf, 0); byte[] getf = new byte[count]; ReadAllData(ns, getf); switch (extension) { case "jpg": pictureExtension = extension; CurrentPicture = getf; ChatContent.Add("[" + Name + "] 收到" + extension + "圖片, Size = " + getf.Length + "\n"); break; case "png": pictureExtension = extension; CurrentPicture = getf; ChatContent.Add("[" + Name + "] 收到" + extension + "圖片, Size = " + getf.Length + "\n"); break; case "bmp": pictureExtension = extension; CurrentPicture = getf; ChatContent.Add("[" + Name + "] 收到" + extension + "圖片, Size = " + getf.Length + "\n"); break; case "gif": pictureExtension = extension; CurrentPicture = getf; ChatContent.Add("[" + Name + "] 收到" + extension + "圖片, Size = " + getf.Length + "\n"); break; default: fileExtension = extension; CurrentFile = getf; ChatContent.Add("[" + Name + "] 收到" + extension + "檔案, Size = " + getf.Length + "\n"); break; } } } catch { } } } } } catch (Exception ex) { } }//while }