IM SDK API 概述 https://cloud.tencent.com/document/product/269/33543
/// <summary> /// IM SDK 初始化。 /// </summary> /// <param name="sdk_app_id"></param> /// <param name="json_sdk_config"></param> /// <returns></returns> [DllImport(@"imsdk.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] public extern static int TIMInit(long sdk_app_id, string json_sdk_config);
/// <summary> /// 登录 /// </summary> /// <param name="user_id">用户id</param> /// <param name="user_sig">签名</param> /// <param name="cb"></param> /// <returns></returns> [DllImport(@"imsdk.dll", CallingConvention = CallingConvention.Cdecl)] private extern static int TIMLogin(string user_id, string user_sig, TIMCommCallback cb);
/// <summary> /// 接收新消息回调 /// </summary> /// <param name="cb"></param> [DllImport(@"imsdk.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] private extern static void TIMAddRecvNewMsgCallback(delegateTIMRecvNewMsgCallback cb);
public void ImInit() { int sdk_app_id = 1400000000; var data = new { sdk_config_log_file_path = AppDomain.CurrentDomain.BaseDirectory, sdk_config_config_file_path = AppDomain.CurrentDomain.BaseDirectory }; TIMInit(sdk_app_id, JsonConvert.SerializeObject(data)); TIMAddRecvNewMsgCallback(TIMRecvNewMsgCallback); var tLSSig = new TLSSigAPIv2(sdk_app_id, "163250645178b565ffc0b22618d14a88d8a91d86f0e76813313197a5xxxxxxx"); TIMLogin("用户", tLSSig.GenSig("用户"), CommCallback); } private delegate int TIMCommCallback(int code, string desc, string json_params); private int CommCallback(int code, string desc, string json_params) { return code; } public delegate void delegateTIMRecvNewMsgCallback([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string json_msg_array, IntPtr user_data);; private void TIMRecvNewMsgCallback(string json_msg_array, IntPtr user_data) { var b = Encoding.Default.GetBytes(json_msg_array); richTextBox1.AppendText(Encoding.UTF8.GetString(b)); }
private void Form1_Load(object sender, EventArgs e) { ImInit(); }
public class Utf8Marshaler : ICustomMarshaler { public void CleanUpManagedData(object managedObj) { } public void CleanUpNativeData(IntPtr pNativeData) { Marshal.FreeHGlobal(pNativeData); } public int GetNativeDataSize() { return -1; } public IntPtr MarshalManagedToNative(object managedObj) { if (object.ReferenceEquals(managedObj, null)) return IntPtr.Zero; if (!(managedObj is string)) throw new InvalidOperationException(); byte[] utf8Bytes = Encoding.UTF8.GetBytes((string)managedObj); IntPtr ptr = Marshal.AllocHGlobal(utf8Bytes.Length + 1); Marshal.Copy(utf8Bytes, 0, ptr, utf8Bytes.Length); Marshal.WriteByte(ptr, utf8Bytes.Length, 0); return ptr; } public object MarshalNativeToManaged(IntPtr pNativeData) { if (pNativeData == IntPtr.Zero) return null; List<byte> bytes = new List<byte>(); for (int offset = 0; ; offset++) { byte b = Marshal.ReadByte(pNativeData, offset); if (b == 0) break; else bytes.Add(b); } return Encoding.UTF8.GetString(bytes.ToArray(), 0, bytes.Count); } private static readonly Utf8Marshaler Instance = new Utf8Marshaler(); public static ICustomMarshaler GetInstance(string cookie) { return Instance; } }
以上就是C# 调用腾讯即时通信 IM的示例的详细内容,更多关于c# 调用腾讯 im的资料请关注小牛知识库其它相关文章!
Linux Mint 自带 pidgin,版本是 2.10。 从源码编译 如果想升级到最新版本,或者,因为某些特殊原因导致内置版本的 pidgin 不可使用,就需要考虑从源码开始编译。 特别说明: 手工编译升级 pidgin 和 lync插件 pidpin-sipe 到最新版本之后,开始可以使用,后面不久就莫名其妙的出问题,表现为 pidgin 启动之后无法找到 pidpin-sipe 导致无法支
Skype for Linux Alpha 是Skype for Linux 新版本的早期版本。 安装 下载地址: https://go.skype.com/skypeforlinux-64-alpha.deb 完成之后直接右键点击 deb 文件通过 Gdebi package installer 安装。 安装完成之后,在互联网下就可以找到 Skype for Linux Alpha: 这是 ab
软件: Skype: skype For Linux Alpha Pidgin: 支持多协议的即时通讯软件 Lync兼容方案: 用于兼容 Lync 2013 / skype for business
Lync (后来被微软收购之后改名为 Skype for business) 没有 linux 版本,但是我们可以通过 pidgin 这个IM通用外壳配置 sipe 插件来实现和 Lync 的兼容和相互通讯。 注: 方案不够完美,但是至少,可以解决有没有的问题。 Pidgin 上一节介绍到,Linux Mint 18 自带 pidgin,也可以自行卸载再从源码编译安装到最新版本。 特别说明: 手工
udp点对点即时通信,加入udp多播功能,实现在局域网里群聊的效果,自动生成泡泡对话框。 [Code4App.com]
项目+常规八股,答得还可以;但是面完秒挂了 :( 项目 项目流程,过程中都调用了哪些API? 项目1难点 定时器有没有更优实现? 线程池,如何选择工作线程? 有限状态机 项目过程中写代码与预期不符如何调试? GDB调试 压测 服务器连接客户端最大数量的限制因素? TCP可靠传输如何保证? 项目2难点 C++ new,malloc 多态 虚函数,虚函数表 vector扩容 memcpy 程序编译流程