/// <summary> /// /// </summary> /// <param name="ip"></param> /// <param name="port"></param> /// <param name="path"></param> /// <returns></returns> public bool transfer(string ip, int port, string path) { try { using (var client = new System.Net.Sockets.TcpClient(ip, port)) { using (var ns = client.GetStream()) { using (var ms = new MemoryStream()) { var ftpMessageData = new FTPMessageData(FTPMessageType.TypeFile); ftpMessageData.Message = Path.GetFileName(path); ftpMessageData.Data = File.ReadAllBytes(path); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(ms, ftpMessageData); ns.Write(ms.ToArray(), 0, (int)ms.Length); } } } } catch { return(false); } return(true); }
/// <summary> /// /// </summary> /// <param name="listener"></param> private void listen(System.Net.Sockets.TcpListener listener) { var client = listener.AcceptTcpClient(); using (var ns = client.GetStream()) { ns.ReadTimeout = ns.WriteTimeout = TimeoutMillisec; bool disconnected = false; do { // クライアントからのメッセージを受信 using (var rms = new MemoryStream()) { ns.Read(rms.ToArray(), 0, (int)rms.Length); BinaryFormatter rbf = new BinaryFormatter(); FTPMessageData rMessageData = (FTPMessageData)rbf.Deserialize(ns); switch (rMessageData.Type) { case FTPMessageType.TypeHandShake: foreach (var listeners in ServerConnectionListeners) { listeners.OnConnectClient(this, rMessageData.Message); } using (var sms = new MemoryStream()) { var sMessageData = new FTPMessageData(FTPMessageType.TypeHandShake); sMessageData.Message = Dns.GetHostName(); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(sms, sMessageData); ns.Write(sms.ToArray(), 0, (int)sms.Length); } break; } } }while (!disconnected); } }
/// <summary> /// /// </summary> /// <param name="client"></param> private void listen(System.Net.Sockets.TcpClient client) { using (var ns = client.GetStream()) { ns.ReadTimeout = ns.WriteTimeout = TimeoutMillisec; using (var ms = new MemoryStream()) { var ftpMessageData = new FTPMessageData(FTPMessageType.TypeHandShake); ftpMessageData.Message = Dns.GetHostName(); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(ms, ftpMessageData); ns.Write(ms.ToArray(), 0, (int)ms.Length); } bool disconnected = false; do { // サーバからのメッセージを受信 using (var ms = new MemoryStream()) { ns.Read(ms.ToArray(), 0, (int)ms.Length); BinaryFormatter bf = new BinaryFormatter(); var ftpMessageData = (FTPMessageData)bf.Deserialize(ns); switch (ftpMessageData.Type) { case FTPMessageType.TypeHandShake: foreach (var listeners in ClientConnectionListeners) { listeners.OnConnectServer(this, ftpMessageData.Message); } break; } } }while (!disconnected); } client.Close(); }