C#實現(xiàn)的Socket服務(wù)器端、客戶端代碼分享
更新時間:2014年08月06日 10:44:58 投稿:junjie
這篇文章主要介紹了C#實現(xiàn)的Socket服務(wù)器端、客戶端代碼分享,2個非常簡單的入門例子,需要的朋友可以參考下
服務(wù)端:
using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; namespace Server { class Program { static void Main(string[] args) { Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint point = new IPEndPoint(IPAddress.Parse("127.0.0.1"),55555); try { server.Bind(point); server.Listen(10); //監(jiān)聽本地端口 System.Console.WriteLine("開始監(jiān)聽本地端口:55555"); while (true) { Socket sock = server.Accept(); byte[] buffer = new byte[1024 * 1024]; int n = sock.Receive(buffer); String cmd = Encoding.UTF8.GetString(buffer, 0, n); String result = execCmd(cmd); byte[] bytes = Encoding.UTF8.GetBytes(result); sock.Send(bytes); } } catch (Exception ex) { System.Console.WriteLine(ex.Message); return; } } //重定向輸入輸出流,并且用cmd執(zhí)行命令 private static String execCmd(String cmd) { System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo = new System.Diagnostics.ProcessStartInfo(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.Arguments ="/c "+cmd; //隱藏程序外殼 p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //在這里重定向輸出即可,因為不是交互式的,如果需要交互式的直接反彈cmd即可 p.StartInfo.RedirectStandardOutput = true; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; p.Start(); return p.StandardOutput.ReadToEnd(); } } }
客戶端:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Windows.Forms; /* * Code By iswin */ namespace Client { public partial class main : Form { public main() { InitializeComponent(); this.ip.Text="127.0.0.1"; this.cmd.Text="ipconfig"; this.port.Text = "55555"; } private void send_Click(object sender, EventArgs e) { Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); String remoteip=this.ip.Text; String command = this.cmd.Text; IPAddress ip = IPAddress.Parse(remoteip); IPEndPoint point=new IPEndPoint(ip,int.Parse(port.Text)); try { this.recvmsg.Text = "開始連接服務(wù)端:" + remoteip + ":" + port.Text + "\n"; client.Connect(point); this.recvmsg.Text="連接服務(wù)端!\n給服務(wù)端發(fā)送指令:"+command; byte[] buffer = Encoding.UTF8.GetBytes(command); //講輸入的指令發(fā)送到服務(wù)端 client.Send(buffer); //接受服務(wù)端返回的數(shù)據(jù) recvmsgs(client); client.Close(); } catch (Exception ex) { this.recvmsg.Text = ex.Message; MessageBox.Show(ex.Message); return; } } //接受服務(wù)端發(fā)送來的消息 private void recvmsgs(Socket client) { try { byte[] buffer = new byte[1024 * 1024]; int size = client.Receive(buffer); String recv = Encoding.UTF8.GetString(buffer, 0, size); this.recvmsg.Text = "\n" + recv; } catch (Exception ex) { MessageBox.Show(ex.Message); return; } } } }
相關(guān)文章
C#中調(diào)用DLL時未能加載文件或程序集錯誤的處理方法(詳解)
下面小編就為大家?guī)硪黄狢#中調(diào)用DLL時未能加載文件或程序集錯誤的處理方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02WinForm通過操作注冊表實現(xiàn)限制軟件使用次數(shù)的方法
這篇文章主要介紹了WinForm通過操作注冊表實現(xiàn)限制軟件使用次數(shù)的方法,結(jié)合實例形式分析了WinForm操作注冊表的原理、步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-06-06