C# 调用腾讯即时通信 IM的示例
IMSDKAPI概述https://cloud.tencent.com/document/product/269/33543
//////IMSDK初始化。 /// ////// /// [DllImport(@"imsdk.dll",CallingConvention=CallingConvention.Cdecl,CharSet=CharSet.Ansi)] publicexternstaticintTIMInit(longsdk_app_id,stringjson_sdk_config);
//////登录 /// ///用户id /// 签名 /// /// [DllImport(@"imsdk.dll",CallingConvention=CallingConvention.Cdecl)] privateexternstaticintTIMLogin(stringuser_id,stringuser_sig,TIMCommCallbackcb);
//////接收新消息回调 /// ///[DllImport(@"imsdk.dll",CallingConvention=CallingConvention.Cdecl,CharSet=CharSet.Ansi)] privateexternstaticvoidTIMAddRecvNewMsgCallback(delegateTIMRecvNewMsgCallbackcb);
publicvoidImInit() { intsdk_app_id=1400000000; vardata=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); vartLSSig=newTLSSigAPIv2(sdk_app_id,"163250645178b565ffc0b22618d14a88d8a91d86f0e76813313197a5xxxxxxx"); TIMLogin("用户",tLSSig.GenSig("用户"),CommCallback); } privatedelegateintTIMCommCallback(intcode,stringdesc,stringjson_params); privateintCommCallback(intcode,stringdesc,stringjson_params) { returncode; } publicdelegatevoiddelegateTIMRecvNewMsgCallback([MarshalAs(UnmanagedType.CustomMarshaler,MarshalTypeRef=typeof(Utf8Marshaler))]stringjson_msg_array,IntPtruser_data);; privatevoidTIMRecvNewMsgCallback(stringjson_msg_array,IntPtruser_data){ varb=Encoding.Default.GetBytes(json_msg_array); richTextBox1.AppendText(Encoding.UTF8.GetString(b)); }
privatevoidForm1_Load(objectsender,EventArgse) { ImInit(); }
publicclassUtf8Marshaler:ICustomMarshaler { publicvoidCleanUpManagedData(objectmanagedObj) { } publicvoidCleanUpNativeData(IntPtrpNativeData) { Marshal.FreeHGlobal(pNativeData); } publicintGetNativeDataSize() { return-1; } publicIntPtrMarshalManagedToNative(objectmanagedObj) { if(object.ReferenceEquals(managedObj,null)) returnIntPtr.Zero; if(!(managedObjisstring)) thrownewInvalidOperationException(); byte[]utf8Bytes=Encoding.UTF8.GetBytes((string)managedObj); IntPtrptr=Marshal.AllocHGlobal(utf8Bytes.Length+1); Marshal.Copy(utf8Bytes,0,ptr,utf8Bytes.Length); Marshal.WriteByte(ptr,utf8Bytes.Length,0); returnptr; } publicobjectMarshalNativeToManaged(IntPtrpNativeData) { if(pNativeData==IntPtr.Zero) returnnull; Listbytes=newList (); for(intoffset=0;;offset++) { byteb=Marshal.ReadByte(pNativeData,offset); if(b==0) break; else bytes.Add(b); } returnEncoding.UTF8.GetString(bytes.ToArray(),0,bytes.Count); } privatestaticreadonlyUtf8MarshalerInstance=newUtf8Marshaler(); publicstaticICustomMarshalerGetInstance(stringcookie) { returnInstance; } }
以上就是C#调用腾讯即时通信IM的示例的详细内容,更多关于c#调用腾讯im的资料请关注毛票票其它相关文章!