我正在尝试使用第三方 API,它是基于套接字的 API,带有 SQL CLR 和 vb.net。我知道如何使用 REST API 来做到这一点,但是,我不知道如何开始使用 Socket API。
有没有人有任何参考资料或我可以用来学习的非常基本的“GET”示例?
我正在尝试使用第三方 API,它是基于套接字的 API,带有 SQL CLR 和 vb.net。我知道如何使用 REST API 来做到这一点,但是,我不知道如何开始使用 Socket API。
有没有人有任何参考资料或我可以用来学习的非常基本的“GET”示例?
我想我找到了我正在寻找的东西——这是让我了解它是如何工作的开始。我在 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”类来了解 Socket API 是如何工作的,因此我可以看看我是否可以将这些知识应用到第三方 Socket API我的最终解决方案。
从这里,我将能够在/与 SQL CLR 中使用它并执行所需的操作。
我现在很好。祝我好运!
为了帮助其他人,除了上面的链接,这里是我使用的代码和我做了什么。
首先是设置:
我在我的个人计算机上执行了此操作,在那里我设置了 IIS,可以将我的计算机视为服务器并使用 localhost。
我在 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
@ptownbro,在我看来,您问的是如何实际使用 Socket API,而不是 SQLCLR 中的 Socket API。我的建议是阅读 API 的文档,看看有哪些方法。一般来说,这就是你所做的:
以上是非常笼统的解释,因为我不知道您打算使用什么 API。这是一个页面,其中包含如何使用 .NET API 在 C# 中执行此操作的示例。
请注意,我只提到发送。如果您打算从 SQLCLR 执行此操作,我强烈建议您不要接收,因为您应该使用“普通”T-SQL DML 语句将数据获取到 SQL Server。