在 SQL CLR 中使用套接字 API



我正在尝试使用第三方API,这是一个基于套接字的API,具有SQL CLR和 vb.net。我知道如何使用 REST API 执行此操作,但是,我不知道如何开始使用套接字 API。

有没有人有任何参考资料或一个非常基本的"GET"示例可以用来学习?

>@ptownbro,在我看来,你问如何实际使用套接字API,而不是SQLCLR中的套接字API。我的建议是阅读API的文档,看看有什么方法。一般来说,这就是你所做的:

  • 定义要发送到的终结点。
  • 创建套接字类的实例。
  • 将套接字实例连接到终结点。
  • 使用套接字实例的任何方法将消息作为字节数组发送 公开发送。

以上是非常笼统的解释,因为我不知道您打算使用什么API。下面是一个页面,其中包含如何使用 .NET API 在 C# 中执行此操作的示例。

请注意,我只提到发送。如果您打算从 SQLCLR 执行此操作,我强烈建议不要接收,因为您应该使用"普通"T-SQL DML 语句将数据导入 SQL Server。

我想我找到了我想要的东西 - 这是一个让我了解它是如何工作的开始。我在YouTube上找到了一些教程来让我入门

这个有两个部分:

https://www.youtube.com/watch?v=T2hgTKL_Haw&t=382s

https://www.youtube.com/watch?v=X2Hvs2qepBw&t=126s

这个有一部分:

https://www.youtube.com/watch?v=MSiBbtxWpI8

第一个教程创建一个充当"服务器"的控制台应用程序,然后创建一个充当"客户端"的 Windows 窗体应用程序。通过这些演示应用程序,我能够弄清楚如何使用"System.Net.Socket"类来了解套接字 API 的工作方式,以便我可以看到是否可以在最终解决方案中将该知识应用于第三方套接字 API。

从这里开始,我将能够在 SQL CLR 中/与 SQL CLR 一起使用它并执行所需的操作。

我现在很好。祝我好运!

为了帮助他人,除了上面的链接外,以下是我使用的代码和我所做的。

首先设置:

  1. 在我的个人计算机上执行此操作,在那里我设置了 IIS,可以将我的计算机视为服务器并使用本地主机。

  2. 我在Visual Studio 中创建了 2 个单独的项目/解决方案 1( 一个作为充当"服务器"的控制台应用程序,2( 一个作为充当客户端的 Windows 表单应用程序。

服务器应用程序的代码:

Imports System.Net.Sockets
Imports System.Text
Module Module1
Sub Main()
Dim VarSocketServer As New TcpListener(8888)
Dim VarSocketClient As TcpClient
Dim VarRequestCount As Integer = 0
VarSocketServer.Start()
Console.WriteLine(">> Server Started")
VarSocketClient = VarSocketServer.AcceptTcpClient
Console.WriteLine(">> Accept connection from client")
While (True)
Try
VarRequestCount = VarRequestCount + 1
Dim VarNetworkStream As NetworkStream = VarSocketClient.GetStream()
Dim VarInStream(10024) As Byte
Dim VarBytesReadAs Integer = VarNetworkStream.Read(VarInStream, 0, VarInStream.Length)
Dim VarDataFromClient As String = System.Text.Encoding.ASCII.GetString(VarInStream)
VarDataFromClient = VarDataFromClient.Substring(0, VarDataFromClient.IndexOf("$"))
Console.WriteLine(">> Data from client: " + VarDataFromClient)
Dim VarServerResponse As String = "Server response: " + Convert.ToString(VarRequestCount)
Dim VarSendByte As [Byte]() = System.Text.Encoding.ASCII.GetBytes(VarServerResponse)
VarNetworkStream.Write(VarSendByte, 0, VarSendByte.Length)
VarNetworkStream.Flush()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End While
VarSocketClient.Close()
VarSocketServer.Stop()
Console.WriteLine(">> Exit")
Console.ReadLine()
End Sub
End Module

客户端代码的代码:

Imports System.Net.Sockets
Imports System.Text
Public Class Form1
Dim VarSocketServer As New TcpClient
Dim VarNetworkStream As NetworkStream
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox1.Text = TextBox1.Text + Environment.NewLine + ">> Client Started")
VarSocketServer.Connect("127.0.0.1", 8888)
Label1.Text = "The client is connected to server"
Dim VarNetworkStream As NetworkStream = VarSocketServer.GetStream()
Dim VarClientRequest As String = "Message from client$"
Dim VarSendByte As [Byte]() = System.Text.Encoding.ASCII.GetBytes(VarClientRequest)
VarNetworkStream.Write(VarSendByte, 0, VarSendByte.Length)
VarNetworkStream.Flush()
Dim VarInStream(10024) As Byte
Dim VarBytesRead = VarNetworkStream.Read(VarInStream, 0, VarInStream.Length)
Dim VarDataFromServer As String = System.Text.Encoding.ASCII.GetString(VarInStream)
TextBox1.Text = TextBox1.Text + Environment.NewLine + ">> Data from server: " + VarDataFromServer)
VarNetworkStream.Flush()
End Sub
End Class

最新更新