UniMedia IDE集成環(huán)境訪(fǎng)問(wèn)網(wǎng)絡(luò )服務(wù)器實(shí)例解析
2009/05/27
1.目標功能
在IDE中實(shí)現Socket客戶(hù)端,向TCP/IP服務(wù)端發(fā)送數據串。
2.數據格式說(shuō)明:
如果外部應用采用NETX控件與IDE進(jìn)行通信,則以MSG對象格式進(jìn)行數據傳遞,不需要進(jìn)行格式拆分。
MSG對象格式示例:
MSG userMsg
userMsg.UserMsgType = 8
userMsg.Int0 = 0
userMsg.Int1 = 1
userMsg.Int2 = 2
userMsg.Int3 = 3
userMsg.Int4 = 4
userMsg.Int5 = 5
userMsg.Int6 = 6
userMsg.Int7 = 7
userMsg.Int8 = 8
userMsg.Int9 = 9
userMsg.Str0 = “a”
userMsg.Str1 = “b”
userMsg.Str2 = “c”
userMsg.Str3 = “d”
userMsg.Str4 = “e”
userMsg.Str5 = “f”
userMsg.Str6 = “g”
userMsg.Str7 = “h”
userMsg.Str8 = “i”
userMsg.Str9 = “j”
如果與外部之間通過(guò)SOCKET直接進(jìn)行碼流通信,以上面的對象值為例,具體消息格式舉例說(shuō)明如下,碼流格式為ASCII碼:
其中:
MID是消息ID(正整數)
4199
1-10等字段字用戶(hù)填上述固定值即可;
StringListSize 字段的值為10個(gè)有效字符數, 其它字段可根據業(yè)務(wù)需要填寫(xiě);
說(shuō)明:10個(gè)Str字符的總長(cháng)不能大于1024個(gè)字節,單個(gè)字段的長(cháng)度不能大于1024個(gè)字節,整個(gè)消息包不能大于2048個(gè)字節。
NETX使用
如果不想自己拆分數據,可直接使用NetX控件。
4.2.4.3 IDE腳本實(shí)例
///////////////////////////////////////////////////////////////
#define TCP_SERVER_IP "127.0.0.1"
#define TCP_SERVER_PORT 14445
SCPMANAGER g_SCPManager
//主函數
sub main(LIST& cpl)
{
CONN l_CONNVar
MSG l_MSGSendVar
String l_stringIpOfClientVar
Int l_intPortClientVar,l_intConnIDClientVar,l_intRetVar
Bool l_boolConnectStatusVar
//初始化IP和PORT
l_stringIpOfClientVar = TCP_SERVER_IP
l_intPortClientVar = TCP_SERVER_PORT
//發(fā)起TCP Client端連接
l_CONNVar.OpenConn(PT_TCP, CT_CLIENT, l_stringIpOfClientVar,
l_intPortClientVar, l_intConnIDClientVar,
false, l_intRetVar)
//等待2秒,等待底層網(wǎng)絡(luò )連接
Wait(2000)
//設置網(wǎng)絡(luò )對象具備自動(dòng)重連特性
l_CONNVar.SetAutoReconnect(true, l_intRetVar)
//注冊數據到達事件
EventMap(INF_SYS_CONNDATAINCOME, OnConnDataIncome, 0)
while(true)
{
//取網(wǎng)絡(luò )連接狀態(tài)
l_CONNVar.GetStatus(l_boolConnectStatusVar, l_intRetVar)
//分析是否已經(jīng)建立網(wǎng)絡(luò )連接,建立則發(fā)送數據
if (l_boolConnectStatusVar == true)
{
//初始化發(fā)送數據
l_MSGSendVar.UserMsgType = 8
l_MSGSendVar.Int0 = 10
l_MSGSendVar.Str0 = "aaa"
Log(DBG,"發(fā)送數據..." )
//發(fā)送數據
l_CONNVar.SendMsg(l_MSGSendVar, l_intRetVar)
//TODO 發(fā)送數據后結束,為驗證數據接收,可以考慮不結束
break
}
//如果連接沒(méi)有成功,則過(guò)一會(huì )再進(jìn)行查詢(xún)
Wait(5000)
}// end of while
//斷開(kāi)網(wǎng)絡(luò )連接,關(guān)閉對象
l_CONNVar.CloseConn()
}
//接收網(wǎng)絡(luò )數據事件回調函數
sub OnConnDataIncome(int tag, CONN& conn)
{
int l_intRetVar
bool l_boolHasMsgVar, l_boolConnectStatusVar
MSG l_MSGReadVar
Log(DBG,"有網(wǎng)絡(luò )數據到達事件!")
//可能有多條消息,進(jìn)行循環(huán)讀取接收
while(true)
{
//開(kāi)始讀消息...
conn.ReadMsg(l_MSGReadVar, l_boolHasMsgVar, l_intRetVar)
if((l_intRetVar == RET_SUCC) && (l_boolHasMsgVar == true))
{
Log(DBG,"(TCP CLIENT READ ,(RET=",l_intRetVar,
",CONNID=", conn.ConnID,
",Type=", l_MSGReadVar.UserMsgType,
",Int0=", l_MSGReadVar.Int0,
",Str0=", l_MSGReadVar.Str0,")")
}
else
{
//沒(méi)有數據或錯誤
return
}
} //end of While read
}
NEX控件說(shuō)明:
NETX 是以ActiveX控件以接口方式被外部應用程序調用。對高層應用程序而言,直接利用控件,可以在不了解UniMedia內部協(xié)議的前提下,實(shí)現與IDE的網(wǎng)絡(luò )通信,具體通信內容是上述定義的MSG對象。詳細接口說(shuō)明可以參考《接口及使用手冊-NETX.PDF》
CTI論壇報道
相關(guān)鏈接:
亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩
徐州市|
平凉市|
大城县|
南投县|
铁力市|
奉化市|
昌黎县|
南投县|
郯城县|
乌兰察布市|
惠东县|
浦东新区|
海晏县|
洛宁县|
出国|
佛山市|
嫩江县|
枝江市|
蒙自县|
乌兰浩特市|
类乌齐县|
长岭县|
宜城市|
宜州市|
克拉玛依市|
大竹县|
阿合奇县|
鸡泽县|
乌拉特后旗|
莲花县|
临泉县|
峡江县|
漳浦县|
夏邑县|
寿宁县|
扬州市|
辽中县|
裕民县|
佛坪县|
云梦县|
鄂温|
http://444
http://444
http://444
http://444
http://444
http://444