Роботы, плагины и скрипты к чату MyChat. Разработка альтернативных клиентов и различных утилит. Технические вопросы по программированию, замечания и предложения по развитию API
Аватара пользователя
vansql
Код: Выделить всё
using System; 
using System.Net.Sockets;
using System.Net;
using System.IO;
using Newtonsoft.Json;
using System.Text;


namespace Client
{
    class PrivateMessage
    {
        public string UserTo { get; set; }
        public string UserFrom { get; set; }
        public string Msg { get; set; }
        public string hash { get; set; }
        public string APIStype { get; set; }
        public string ServerKey { get; set; }
    }
    class AddBBSMessage
    {
        public string ServerKey { get; set; }
        public string APIStyle { get; set; }
        public string UserFrom { get; set; }
        public string Expired { get; set; }
        public string Sticky { get; set; }
        public string Msg { get; set; }

    }
    class Program
    {
        static void Main(string[] args)
        {
            PrivateMessage PM = new PrivateMessage();
            PM.UserTo = "1";
            PM.UserFrom = "0";
            PM.Msg = "lalala";
            PM.hash = "";
            PM.APIStype = "customapi";
            PM.ServerKey = "tRmbkBc6ZqHzuyk7dkEL";
            string json_send_message = JsonConvert.SerializeObject(PM);

            AddBBSMessage add_bbs = new AddBBSMessage();
            add_bbs.ServerKey = "tRmbkBc6ZqHzuyk7dkEL";
            add_bbs.APIStyle = "customapi";
            add_bbs.UserFrom = "1";
            add_bbs.Expired = "10.09.2016.17.34.15";
            add_bbs.Sticky = "true";
            add_bbs.Msg = @"текст ";
            string json_add_bbs = JsonConvert.SerializeObject(add_bbs);


           
            string CRLF = "\u000D\u000A";
            string MagicPacket = "\u0017\u0006";           
            string cs_integration_api = "0077";
            string iFlag = "30";
            string MCIAPI_CS_SendPrivateMessage = "0002";
            string MCIAPI_CS_AddBBSMessage = "0008";
           

            TcpClient client = new TcpClient();
            client.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.10"), 2004));

            StreamWriter sw = new StreamWriter(client.GetStream(),Encoding.GetEncoding(1251));
            sw.AutoFlush = true;
            string message = "mc5.20" + CRLF;
            Console.WriteLine("Client : " + message);
            sw.WriteLine(message);

            StreamReader sr = new StreamReader(client.GetStream(),Encoding.GetEncoding(1251));
            Console.WriteLine("Server : " + sr.ReadLine());

           
            Console.WriteLine("Client : " + MagicPacket + cs_integration_api + iFlag + MCIAPI_CS_AddBBSMessage + json_add_bbs + CRLF);
            sw.WriteLine(MagicPacket + cs_integration_api + iFlag + MCIAPI_CS_AddBBSMessage + json_add_bbs + CRLF);
            Console.WriteLine("Server : " + sr.ReadLine());
            client.Close();

            Console.ReadKey();
        }
    }
}
   


Спасибо, чуть подправил, добавил кодировку 1251.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Георгий Лысенко
И к вашему сведению, для отправки каждой новой команды на сервер нужна повторная авторизация посредством отправки signature.
Аватара пользователя
Алексей Пикуров
Иными словами, из-за упрощённой процедуры авторизации IntegrationAPI схема работы такая: подключился, получил информацию о сервере, отправил одну команду, получил ответ, отключился.

Собственно, потому сервер в логе и писал ошибку, когда вы одним махом пытались пару команд отправить. Кодировка win1251 необязательна, кстати, JSON правильно обрабатывает юникодовые строки, делает из них ESC-последовательности.
Аватара пользователя
Алексей Пикуров
Новая тема по работе с MyChat IntegrationAPI на C#: viewtopic.php?p=22945#p22945

Спасибо за прототип :) Включим доработанный вариант в дистрибутив MyChat Server.
Аватара пользователя
Алексей Пикуров
viewtopic.php?p=22950#p22950