這篇文章主要介紹了C#如何實現同步模式下的端口映射程序的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C#如何實現同步模式下的端口映射程序文章都會有所收獲,下面我們一起來看看吧。
代碼如下:
class Program { static void Main(string[] args) { TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Loopback, 8000)); listener.Start(); while (true) { var client = listener.AcceptTcpClient(); Console.WriteLine("connected"); var proxy = new TcpClient(); Console.WriteLine("remote connected"); proxy.Connect(new IPEndPoint(IPAddress.Loopback, 21)); new SyncProxy("client->remote",proxy.GetStream(), client.GetStream()); new SyncProxy("remote->client",client.GetStream(), proxy.GetStream()); } } } class SyncProxy { NetworkStream read; NetworkStream write; string name; public SyncProxy(string name, NetworkStream read,NetworkStream write) { this.name = name; this.read = read; this.write = write; System.Threading.ThreadPool.QueueUserWorkItem(PipeStream); } void PipeStream(object state) { byte[] buffer = new byte[1500]; int count = 0; while (true) { try { count = read.Read(buffer, 0, buffer.Length); } catch (Exception) { count = 0; } if (count == 0) { Console.WriteLine(name+" closed"); write.Close(); break; } Console.Write(name + ": "+ Encoding.Default.GetString(buffer, 0, count)); write.Write(buffer, 0, count); } } }
通過它獲取到的cuteFtp交互命令如下:
connected
remote connected
client->remote: 220 Serv-U FTP Server v6.0 for WinSock ready...
remote->client: USER 1
client->remote: 331 User name okay, need password.
remote->client: PASS 1
client->remote: 230 User logged in, proceed.
remote->client: PWD
client->remote: 257 "/" is current directory.
remote->client: FEAT
client->remote: 211-Extension supported
client->remote: CLNT
MDTM
MDTM YYYYMMDDHHMMSS[+-TZ];filename
SIZE
SITE PSWD;EXEC;SET;INDEX;ZONE;CHMOD;MSG
REST STREAM
XCRC filename;start;end
MODE Z
211 End
remote->client: REST 0
client->remote: 350 Restarting at 0. Send STORE or RETRIEVE.
remote->client: PASV
client->remote: 227 Entering Passive Mode (127,0,0,1,29,18)
remote->client: LIST
client->remote: 150 Opening ASCII mode data connection for /bin/ls.
client->remote: 226 Transfer complete.
關于“C#如何實現同步模式下的端口映射程序”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“C#如何實現同步模式下的端口映射程序”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。