C#通过TCP发送命令并返回json

本文关键字:返回 json 命令 通过 TCP | 更新日期: 2023-09-27 18:22:44

基本上我正在编写一个要发送的小型windows应用程序,我不知道如何通过TCP套接字将命令发送到本地网络机器。我在谷歌上查找的所有例子看起来都很复杂,因为我想做什么。到目前为止,我在我的c#程序中有这个

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
namespace MiningMonitorClientW
{
static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new form1());
        string userworker = Textbox1 + TextBox2;
    }

    public static string Textbox1 { get; set; }
    public static string TextBox2 { get; set; }
 }
}

基本上,我试图在C#中模仿下面ruby中的代码

通过TCPsocket向给定的IP发送一个命令,然后保存json响应。

s = TCPSocket.new '192.xxx.x.x', xxxx
s.puts '{"command": "devs"}'
dev_query = s.gets

然后使用http put请求发送到网站

path = "/workers/update"
host = "https://miningmonitor.herokuapp.com"
puts RestClient.put "#{host}#{path}", updateinfo, {:content_type => :json} 

我很想在c#有人帮我!!!1:D谢谢

我最终解决了我的问题,下面的代码通过TCP发送一个字符串,然后在字符串中接收一个json。

 byte[] bytes = new byte[1024];
        try
        {
            IPAddress ipAddr = IPAddress.Parse("xxx.xxx.x.xxx");
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 4028);
            Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sender.Connect(ipEndPoint);
            Console.WriteLine("Socket connected to {0}", sender.RemoteEndPoint.ToString());
            string SummaryMessage = "string to send";
            byte[] msg = Encoding.ASCII.GetBytes(SummaryMessage);
            sender.Send(msg);
            byte[] buffer = new byte[1024];
            int lengthOfReturnedBuffer = sender.Receive(buffer);
            char[] chars = new char[lengthOfReturnedBuffer];
            Decoder d = System.Text.Encoding.UTF8.GetDecoder();
            int charLen = d.GetChars(buffer, 0, lengthOfReturnedBuffer, chars, 0);
            String returnedJson = new String(chars);
            Console.WriteLine("The Json:{0}", returnedJson);
            sender.Shutdown(SocketShutdown.Both);
            sender.Close();        
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception: {0}", ex.ToString());
        }

C#通过TCP发送命令并返回json

看起来你只是想发出web请求,而不是学习TCP通信。以下是可以用于此目的的类的部分列表:

  • Web请求
  • Web客户端
  • HttpClient

在Framework和JavaScriptSerializer中也有处理JSON的类,在JSON之外也有。Net是最著名的类之一。

显然,您可以更深入地合作并直接使用System.Net命名空间的TCP方法,但对于这种情况来说,这可能有些过头了。

我会设置一个托管在IIS中的TCP/IP WCF服务。如果你不想使用IIS,它也可以在Windows服务/控制台应用程序/WinForm应用程序中自我托管。

然后,您可以从服务中返回任意格式,包括JSON