Я работаю над приложением клиентского сервера, где клиентская программа - Python, а серверная программа - C#. Сервер начинает получать данные датчика, как показано в приведенном ниже формате < /p>
{"ACP": 15, "AliveCnt": 6, "CPDC": 126, "CPS": 14, "DP": 1, "PPS": 2, "SMS": 1, "TCPS": 0, "CATGORY0": 3, "CATGORY1": 9, "CATGORY2": 1, "CATGORY3": 6, "ERRCOD0": 15, "ERRCOD1": 6, "ERRCOD2": 2, "ERRCOD3": 4, "INTFACE0": 0, "INTFACE1": 0, "INTFACE2": 0, "INTFACE3": 0, "SEVRTY0": 0, "SEVRTY1": 1, "SEVRTY2": 1, "SEVRTY3": 2, "MSRDATT": 47}
< /code>
Проблема возникает при попытке десериализовать данные с помощью JSON. Приведенный выше вывод не является действительным форматом JSON. Я хочу преобразовать вышеупомянутый выход в следующем формате < /p>
"{\"ACP\": 15, \"AliveCnt\": 6, \"CPDC\": 126, \"CPS\": 14, \"DP\": 1, \"PPS\": 2, \"SMS\": 1, \"TCPS\": 0, \"CATGORY0\": 3, \"CATGORY1\": 9, \"CATGORY2\": 1, \"CATGORY3\": 6, \"ERRCOD0\": 15, \"ERRCOD1\": 6, \"ERRCOD2\": 2, \"ERRCOD3\": 4, \"INTFACE0\": 0, \"INTFACE1\": 0, \"INTFACE2\": 0, \"INTFACE3\": 0, \"SEVRTY0\": 0, \"SEVRTY1\": 1, \"SEVRTY2\": 1, \"SEVRTY3\": 2, \"MSRDATT\": 47}";
< /code>
Ниже приведен код сервера, который получает и десериализует входящие данные < /p>
namespace WinFormsAppSocket
{
public partial class Form1 : Form
{
TcpListener server = null;
public class Class1
{
public int ACP { get; set; }
public int AliveCnt { get; set; }
public int CPDC { get; set; }
public int CPS { get; set; }
public int DP { get; set; }
public int PPS { get; set; }
public int SMS { get; set; }
public int TCPS { get; set; }
public int CATGORY0 { get; set; }
public int CATGORY1 { get; set; }
public int CATGORY2 { get; set; }
public int CATGORY3 { get; set; }
public int ERRCOD0 { get; set; }
public int ERRCOD1 { get; set; }
public int ERRCOD2 { get; set; }
public int ERRCOD3 { get; set; }
public int INTFACE0 { get; set; }
public int INTFACE1 { get; set; }
public int INTFACE2 { get; set; }
public int INTFACE3 { get; set; }
public int SEVRTY0 { get; set; }
public int SEVRTY1 { get; set; }
public int SEVRTY2 { get; set; }
public int SEVRTY3 { get; set; }
public int MSRDATT { get; set; }
}
private void ThreadProc()
{
Debug.WriteLine("Thread Started");
try
{
// Set the TcpListener on port 13000.
Int32 port = 65223;
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
// TcpListener server = new TcpListener(port);
//server = new TcpListener(localAddr, port);
server = new TcpListener(localAddr, port);
// Start listening for client requests.
server.Start();
Debug.WriteLine("Server has started.Waiting for clients...");
// Buffer for reading data
Byte[] bytes = new Byte[256];
String data = null;
while (true)
{
Debug.WriteLine("Waiting for a connection... ");
// Perform a blocking call to accept requests.
// You could also use server.AcceptSocket() here.
using TcpClient client = server.AcceptTcpClient();
Debug.WriteLine("Connected with client!");
data = null;
// Get a stream object for reading and writing
NetworkStream stream = client.GetStream();
int i;
// Loop to receive all the data sent by the client.
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
// Translate data bytes to a ASCII string.
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Debug.WriteLine(data);
Class1? m = JsonSerializer.Deserialize(data);
Debug.WriteLine("Deserialized value", m.AliveCnt);
textBox1.Text = m.AliveCnt.ToString();
}
}
}
catch (SocketException e)
{
Debug.WriteLine("SocketException: {0}", e);
}
finally
{
server.Stop();
}
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Debug.WriteLine("Hello from Form1....");
Thread th = new Thread(ThreadProc);
th.IsBackground = true;
th.Start();
}
}
< /code>
} < /p>
Клиентская часть кода отвечает за отправку данных < /p>
data = {"ACP": data[0], "AliveCnt": data[1], "CPDC": data[2], "CPS": data[3],"DP": data[4],"PPS": data[5],"SMS": data[6],"TCPS": data[7],
"CATGORY0": data[8],"CATGORY1": data[9],"CATGORY2": data[10],"CATGORY3": data[11],"ERRCOD0": data[12],"ERRCOD1": data[13],"ERRCOD2": data[14],
"ERRCOD3": data[15],"INTFACE0": data[16],"INTFACE1": data[17],"INTFACE2": data[18],"INTFACE3": data[19],"SEVRTY0": data[20],"SEVRTY1": data[21],
"SEVRTY2": data[22],"SEVRTY3": data[23],"MSRDATT": data[24]}
print("print", data)
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(str(json.dumps(data)).encode())
s.close()
except:
print("Can't open port")
pass
< /code>
Ошибка сообщена в следующей строке < /p>
Class1? m = JsonSerializer.Deserialize(data);
< /code>
Сгенерированная ошибка, показанная ниже. < /p>
Exception thrown: 'System.Text.Json.JsonException' in System.Text.Json.dll
An unhandled exception of type 'System.Text.Json.JsonException' occurred in System.Text.Json.dll
'47' is an invalid end of a number. Expected a delimiter. Path: $.MSRDATT | LineNumber: 0 | BytePositionInLine: 256.
Я работаю над приложением клиентского сервера, где клиентская программа - Python, а серверная программа - C#. Сервер начинает получать данные датчика, как показано в приведенном ниже формате < /p> [code]{"ACP": 15, "AliveCnt": 6, "CPDC": 126, "CPS": 14, "DP": 1, "PPS": 2, "SMS": 1, "TCPS": 0, "CATGORY0": 3, "CATGORY1": 9, "CATGORY2": 1, "CATGORY3": 6, "ERRCOD0": 15, "ERRCOD1": 6, "ERRCOD2": 2, "ERRCOD3": 4, "INTFACE0": 0, "INTFACE1": 0, "INTFACE2": 0, "INTFACE3": 0, "SEVRTY0": 0, "SEVRTY1": 1, "SEVRTY2": 1, "SEVRTY3": 2, "MSRDATT": 47} < /code> Проблема возникает при попытке десериализовать данные с помощью JSON. Приведенный выше вывод не является действительным форматом JSON. Я хочу преобразовать вышеупомянутый выход в следующем формате < /p> "{\"ACP\": 15, \"AliveCnt\": 6, \"CPDC\": 126, \"CPS\": 14, \"DP\": 1, \"PPS\": 2, \"SMS\": 1, \"TCPS\": 0, \"CATGORY0\": 3, \"CATGORY1\": 9, \"CATGORY2\": 1, \"CATGORY3\": 6, \"ERRCOD0\": 15, \"ERRCOD1\": 6, \"ERRCOD2\": 2, \"ERRCOD3\": 4, \"INTFACE0\": 0, \"INTFACE1\": 0, \"INTFACE2\": 0, \"INTFACE3\": 0, \"SEVRTY0\": 0, \"SEVRTY1\": 1, \"SEVRTY2\": 1, \"SEVRTY3\": 2, \"MSRDATT\": 47}"; < /code> Ниже приведен код сервера, который получает и десериализует входящие данные < /p> namespace WinFormsAppSocket { public partial class Form1 : Form { TcpListener server = null;
public class Class1 { public int ACP { get; set; } public int AliveCnt { get; set; } public int CPDC { get; set; } public int CPS { get; set; } public int DP { get; set; } public int PPS { get; set; } public int SMS { get; set; } public int TCPS { get; set; } public int CATGORY0 { get; set; } public int CATGORY1 { get; set; } public int CATGORY2 { get; set; } public int CATGORY3 { get; set; } public int ERRCOD0 { get; set; } public int ERRCOD1 { get; set; } public int ERRCOD2 { get; set; } public int ERRCOD3 { get; set; } public int INTFACE0 { get; set; } public int INTFACE1 { get; set; } public int INTFACE2 { get; set; } public int INTFACE3 { get; set; } public int SEVRTY0 { get; set; } public int SEVRTY1 { get; set; } public int SEVRTY2 { get; set; } public int SEVRTY3 { get; set; } public int MSRDATT { get; set; }
try { // Set the TcpListener on port 13000. Int32 port = 65223; IPAddress localAddr = IPAddress.Parse("127.0.0.1");
// TcpListener server = new TcpListener(port); //server = new TcpListener(localAddr, port); server = new TcpListener(localAddr, port); // Start listening for client requests. server.Start(); Debug.WriteLine("Server has started.Waiting for clients..."); // Buffer for reading data Byte[] bytes = new Byte[256]; String data = null;
while (true) {
Debug.WriteLine("Waiting for a connection... ");
// Perform a blocking call to accept requests. // You could also use server.AcceptSocket() here. using TcpClient client = server.AcceptTcpClient();
Debug.WriteLine("Connected with client!");
data = null;
// Get a stream object for reading and writing NetworkStream stream = client.GetStream();
int i;
// Loop to receive all the data sent by the client. while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) {
// Translate data bytes to a ASCII string. data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT)) s.send(str(json.dumps(data)).encode()) s.close() except: print("Can't open port") pass < /code> Ошибка сообщена в следующей строке < /p> Class1? m = JsonSerializer.Deserialize(data); < /code> Сгенерированная ошибка, показанная ниже. < /p> Exception thrown: 'System.Text.Json.JsonException' in System.Text.Json.dll An unhandled exception of type 'System.Text.Json.JsonException' occurred in System.Text.Json.dll '47' is an invalid end of a number. Expected a delimiter. Path: $.MSRDATT | LineNumber: 0 | BytePositionInLine: 256. [/code] направляйте меня, чтобы узнать проблему
Я работаю над приложением клиентского сервера, где клиентская программа - Python, а серверная программа - C#. Сервер начинает получать данные датчика, как показано в приведенном ниже формате
{ ACP : 15, AliveCnt : 6, CPDC : 126, CPS : 14, DP : 1,...
Я пытаюсь сделать программу, чтобы помочь людям избавиться от своего спама. Есть часть моего кода, которая получает мою ошибку, с которой я не знаю, что делать. Мой сценарий Python - следующее:
import requests
import msal
import joblib
Я пытаюсь сделать программу, чтобы помочь людям избавиться от своего спама. Есть часть моего кода, которая получает мою ошибку, с которой я не знаю, что делать. Мой сценарий Python - следующее:
import requests
import msal
import joblib
Я пытаюсь сделать программу, чтобы помочь людям избавиться от своего спама. Есть часть моего кода, которая получает мою ошибку, с которой я не знаю, что делать. Мой сценарий Python - следующее:
import requests
import msal
import joblib
Я работаю над проектом, в котором использую датчик уровня воды для открытия/закрытия электромагнитного клапана для поддержания уровня воды.
В настоящее время я нахожусь на этапе использования Python для считывания выходных данных датчика. В моем...