当前位置:  编程技术>.net/c#/asp.net

C#实现的Socket服务器端、客户端代码分享

    来源: 互联网  发布时间:2014-11-01

    本文导语:  服务端: 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...

服务端:

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;
        }
    }
  }
}

    
 
 

您可能感兴趣的文章:

  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • C#实现获取枚举中元素个数的方法
  • C#实现自定义双击事件
  • C#键盘输入回车键实现点击按钮效果的方法
  • C#实现获取一年中是第几个星期的方法
  • C#实现Datatable排序的方法
  • C#实现装箱与拆箱操作简单实例
  • 解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法
  • C#下实现创建和删除目录的实例代码
  • 使用C#实现在屏幕上画图效果的代码实例
  • C#实现过滤html标签并保留a标签的方法
  • c#实现TextBox只允许输入数字
  • C# Winform 整个窗口拖动的实现代码
  • c# ListView实现双击Item事件的变通方法
  • C#实现随鼠标移动窗体实例
  • C#中的FileUpload 选择后的预览效果具体实现
  • C# 窗体隐藏及任务管理器中禁止关闭的实现代码
  • C#的锯齿数组以及C++实现代码
  • C#格式化文件大小的实现代码
  • C#怎样才能实现窗体最小化到托盘呢?
  • C# char类型字符转换大小写的实现代码
  • php实现socket实现客户端和服务端数据通信源代码
  • Web服务器/前端 iis7站长之家
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • Java的SAMBA客户端实现 jCIFS
  • 如何用代码实现一个samba客户端??
  • 怎样实现从服务器发串字符到客户端
  • 我想把文件自动拷到客户端,怎么实现?
  • jsp如何实现往客户端写数据文件
  • 请问linux写socket的客户端如何实现WSAAsyncSelect
  • 特急!!!怎样用JAVA代码实现对web客户端用户licence管理(如:licence限定为5用户)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 用正则实现提取代码内容的代码
  • 通过javascript库JQuery实现页面跳转功能代码
  • 请问高手:Ctrl+Alt+F1~F8可以切换虚拟终端,这个代码是在哪儿实现的?我搞不懂,最好指点源代码大概位置。
  • c语言判断某一年是否为闰年的各种实现程序代码
  • c++ 连接两个字符串实现代码 实现类似strcat功能
  • C#/.NET字符串加密和解密实现(AES和RSA代码举例)
  • servlet中怎么实现java代码和html代码的分离????
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • 如何用代码手工实现激活事件发生
  • Session id实现通过Cookie来传输方法及代码参考
  • python 实现文件的递归拷贝实现代码
  • JavaScript实现页面跳转的几种方法(参考代码)
  • 代码实现Radius服务模拟的问题,熟悉Radius服务的大虾请进!
  • java实现判断字符串是否全是数字的四种方法代码举例
  • JQuery实现元素屏幕居中显示的代码
  • windows下c/c++读写锁实现原理及代码参考
  • css创意ul+li实现的细线表格实现代码
  • Linux 共享内存介绍及实现代码
  • winform下实现win7 Aero磨砂效果实现代码
  • c语言实现MD5算法完整代码示例
  • jQuery 表格隔行换色 鼠标高亮行变色的实现代码
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • interface 到底有什么用???实现接口,怎么实现??
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 怎么用Jsp实现在页面实现树型结构?
  • boost unordered_map和std::list相结合的实现LRU算法
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3