通过sql crl函数向客户端发送点对点信息

 

今天终于通过sql 2005里面的 SQL 2005 CRL 函数

完成了向客服端信息传送

sql 语句:

SQL SERVER:

 

use xp_aion


exec sp_configure 'clr enabled',1 
reconfigure 
go

 

Alter Database xp_aion SET TRUSTWORTHY ON


CREATE ASSEMBLY [System.Net.Sockets] from 'C:\classScoket.dll'    //已编译的dll文件 里面含有Send方法
with permission_set=unsafe

 


CREATE FUNCTION dbo.clrHelloWorld 

    @message as nvarchar(200)
 
)  
RETURNS nvarchar(200) 
AS EXTERNAL NAME [System.Net.Sockets].[classScoket.Class1].classscoket

 

//sql执行
SELECT dbo.clrHelloWorld('Mark')

 

 //dll文件方法

classScoket.dll:

public static string classscoket(string mes)
        {
          

          
            string msg = mes;
           
            TcpClient tcpc = new TcpClient("192.168.2.107", 5656);
            NetworkStream tcpStream = tcpc.GetStream();
            StreamWriter reqStreamW = new StreamWriter(tcpStream);
            reqStreamW.Write(msg);
            reqStreamW.Flush();
            tcpStream.Close();
            tcpc.Close();
            return (mes);


        }

 

客户端接收函数(一直处于监听状态):

 private void Listen()
        {
          
            try
      {
     TcpListener tcpl = new TcpListener(5656);

             tcpl.Start();
       while (true)
       {

           Socket s = tcpl.AcceptSocket();
           Byte[] stream = new Byte[80];
           int i = s.Receive(stream);
           string message = System.Text.Encoding.UTF8.GetString(stream);
           MessageBox.Show(message);
          
       }
      }
    catch(System.Security.SecurityException)
      {
   MessageBox.Show("防火墙安全错误!","错误",
        MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

 

      }
    catch(Exception)
        {
     
    }
           
}

 

图片

 

 通过执行     SELECT dbo.clrHelloWorld('Mark')

目标机器:

图片

 

然后通过数据库的insert触发器 调用dbo.clrHelloWorld函数,dbo.clrHelloWorld函数再调用classScoket.dll

里面的classscoket方法向目标机器发送信息

这里IPaddress 是局域网内的 

 

同时实验了通过自己外网地址来发送信息,不过首先要配置好网关和对应的端口。

转载于:https://www.cnblogs.com/cheap/archive/2009/12/18/1627318.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值