C#实现的Socket服务器端、客户端代码分享
更新时间:2014年08月06日 10:44:58 投稿:junjie
这篇文章主要介绍了C#实现的Socket服务器端、客户端代码分享,2个非常简单的入门例子,需要的朋友可以参考下
服务端:
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); //监听本地端口 System.Console.WriteLine("开始监听本地端口: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执行命令 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 = "开始连接服务端:" + remoteip + ":" + port.Text + "\n"; client.Connect(point); this.recvmsg.Text="连接服务端!\n给服务端发送指令:"+command; byte[] buffer = Encoding.UTF8.GetBytes(command); //讲输入的指令发送到服务端 client.Send(buffer); //接受服务端返回的数据 recvmsgs(client); client.Close(); } catch (Exception ex) { this.recvmsg.Text = ex.Message; MessageBox.Show(ex.Message); return; } } //接受服务端发送来的消息 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; } } } }
相关文章
HttpWebRequest出错.Section=ResponseHeader Detail=CR
HttpWebRequest出错.Section=ResponseHeader Detail=CR...2007-03-03C# SaveFileDialog与OpenFileDialog用法案例详解
这篇文章主要介绍了C# SaveFileDialog与OpenFileDialog用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下2021-08-08VS2019配置OpenCV4.1.0详细教程与测试代码(推荐)
这篇文章主要介绍了VS2019配置OpenCV4.1.0详细教程与测试代码,本文通过截图实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-03-03
最新评论