C#實(shí)現(xiàn)的Socket服務(wù)器端、客戶端代碼分享
更新時(shí)間:2014年08月06日 10:44:58 投稿:junjie
這篇文章主要介紹了C#實(shí)現(xiàn)的Socket服務(wù)器端、客戶端代碼分享,2個(gè)非常簡單的入門例子,需要的朋友可以參考下
服務(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; //在這里重定向輸出即可,因?yàn)椴皇墙换ナ降模绻枰换ナ降闹苯臃磸梒md即可 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; } } } }
您可能感興趣的文章:
- C#使用Socket發(fā)送和接收TCP數(shù)據(jù)實(shí)例
- c#(Socket)異步套接字代碼示例
- C#中Socket通信用法實(shí)例詳解
- C#使用Socket實(shí)現(xiàn)發(fā)送和接收圖片的方法
- c#(Socket)同步套接字代碼示例
- C#開發(fā)之Socket網(wǎng)絡(luò)編程TCP/IP層次模型、端口及報(bào)文等探討
- C#中異步Socket通信編程代碼實(shí)例
- C#實(shí)現(xiàn)Socket通信的解決方法
- C# Socket網(wǎng)絡(luò)編程實(shí)例
- C#學(xué)習(xí)教程之Socket的簡單使用
相關(guān)文章
C#實(shí)現(xiàn)由四周向中心縮小的窗體退出特效
這篇文章主要介紹了C#實(shí)現(xiàn)由四周向中心縮小的窗體退出特效,通過簡單的C#窗口調(diào)用參數(shù)設(shè)置實(shí)現(xiàn)該退出特效功能,非常簡單實(shí)用,需要的朋友可以參考下2015-08-08C#中調(diào)用DLL時(shí)未能加載文件或程序集錯(cuò)誤的處理方法(詳解)
下面小編就為大家?guī)硪黄狢#中調(diào)用DLL時(shí)未能加載文件或程序集錯(cuò)誤的處理方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02基于WPF實(shí)現(xiàn)用戶頭像選擇器的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何基于WPF實(shí)現(xiàn)用戶頭像選擇器,文中的示例代碼簡潔易懂,對我們學(xué)習(xí)WPF有一定幫助,感興趣的可以了解一下2022-07-07WinForm通過操作注冊表實(shí)現(xiàn)限制軟件使用次數(shù)的方法
這篇文章主要介紹了WinForm通過操作注冊表實(shí)現(xiàn)限制軟件使用次數(shù)的方法,結(jié)合實(shí)例形式分析了WinForm操作注冊表的原理、步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06