青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

最近學(xué)習(xí)了Apache MINA通訊,在使用過(guò)程中碰到了一些問(wèn)題,記錄下一些心得。

在服務(wù)端和客戶端都使用MINA提供的庫(kù)時(shí),通訊一切正常,當(dāng)我把客戶端改為C++代碼時(shí),發(fā)現(xiàn)客戶端發(fā)送給服務(wù)端的二進(jìn)制流中的整形數(shù)據(jù),位置被倒置了。

C++客戶端16進(jìn)制  :0x00000013

MINA服務(wù)端16進(jìn)制:0x13000000

查詢了網(wǎng)上資料后才知道Java在所有平臺(tái)上都默認(rèn)是big-endian,而C++在不同的平臺(tái)上有不同的字節(jié)序, X86上是little-endian, solaris上是big-endian。

注意問(wèn)題:

1、字節(jié)序

C++在不同的平臺(tái)上有不同的字節(jié)序, X86上是little-endian, solaris上是big-endian; 而java在所有平臺(tái)上都默認(rèn)是big-endian, 所以在傳輸諸如short,int,long數(shù)據(jù)時(shí)要在C++轉(zhuǎn)換成網(wǎng)絡(luò)序(big-endian)
2、字符編碼

C++上最普遍的是采用mbcs, 而java上是用unicode(并且和標(biāo)準(zhǔn)的unicode還有些區(qū)別,可以參考java文檔), 所以除非必須否則不要傳字符串, 可以傳文本文件代替, 一定要傳的話只能自己轉(zhuǎn)換了
3、 內(nèi)存對(duì)齊, 在C/C++的網(wǎng)絡(luò)通信程序中經(jīng)常采用讀寫結(jié)構(gòu)體的方式方便地交換數(shù)據(jù), 但是不注意的話結(jié)構(gòu)體內(nèi)很可能有空隙, 比如struct A{ int a; char c }; struct B{ char a; int b }; 這兩個(gè)結(jié)構(gòu)體內(nèi)都有空隙, 而如果不說(shuō)明空隙的存在java程序是不會(huì)知道的, 就會(huì)導(dǎo)致雙方解析時(shí)出錯(cuò). 要消除空隙應(yīng)該小心地安排結(jié)構(gòu)體的成員, 不推薦使用#pragma pach(1), 因?yàn)闆](méi)有通用性
4、 位域

除非小心安排, 否則位域?qū)е碌慕Y(jié)構(gòu)體大小與平臺(tái)相關(guān), int a:4所占用的字節(jié)隨平臺(tái)和編譯器變化(char a:4相對(duì)穩(wěn)定占1字節(jié))
5、 (可能平臺(tái)相關(guān))傳送與接收速度不同
當(dāng)C++向java傳送一個(gè)大一些的數(shù)據(jù)時(shí), 可能C++一邊已經(jīng)傳完退出了, 而java那邊還沒(méi)收完, 導(dǎo)致最后的一部分?jǐn)?shù)據(jù)丟失. 所以項(xiàng)目中采用了簡(jiǎn)單的確認(rèn)機(jī)制, 任何一方接收完數(shù)據(jù)就回送1字節(jié)的確認(rèn), 以防止C++過(guò)早退出

6、(可能平臺(tái)相關(guān))java在同C++建立連接后以及在C++向java傳送完一段數(shù)據(jù)后, java若向C++傳送一段數(shù)據(jù)則第一次傳送的數(shù)據(jù)C++只能收到一個(gè)字節(jié), 第一次過(guò)后恢復(fù)正常


C++整形轉(zhuǎn)換代碼如下:

void swap_4(unsigned long &x)  
{  
    x 
= (x << 24|  
    ((x 
<< 8& 0x00ff0000u|  
    ((x 
>> 8& 0x0000ff00u|  
    (x 
>> 24);  
}  
  
int _tmain(int argc, _TCHAR* argv[])  
{  
       
     unsigned 
long len = 19;  
     swap_4(len);  
}

Feedback

# re: MINA服務(wù)端與C++客戶端通訊(1)  回復(fù)  更多評(píng)論   

2011-07-07 22:14 by 放屁阿狗
1.大小數(shù)問(wèn)題這是個(gè)跨平臺(tái)、網(wǎng)絡(luò)編程基礎(chǔ)概念,*nix一般都是大數(shù)優(yōu)先
2.你說(shuō)的這個(gè)我都沒(méi)聽明白,mbcs可以進(jìn)行任何編碼iconv,傳輸字符串編碼很多方式,utf8比較流行,也可以進(jìn)行壓縮,你可以參考一些通信軟件框架的消息編碼代碼,定義一個(gè)合適的協(xié)議格式封裝你所要傳遞的消息,比如rpc的xdr,ice通信協(xié)議
3.c/c++這種允許直接內(nèi)存地址引用的語(yǔ)言,只有我在剛學(xué)會(huì)編程的開始會(huì)直接&obj的地址作為數(shù)據(jù)的首地址進(jìn)行異構(gòu)網(wǎng)絡(luò)的通信,采用#pragma這種方式來(lái)實(shí)現(xiàn)對(duì)其這是個(gè)很要命且很呆瓜的辦法,導(dǎo)致了諸多的問(wèn)題,必須封裝成stream wrapper的方式來(lái)serialize數(shù)據(jù),比如java的writeUint32,writeString等等
4.不知在說(shuō)啥
5.這個(gè)問(wèn)題很好解決,c端發(fā)送完畢調(diào)用shutdown(1)實(shí)現(xiàn)半關(guān)閉,java那里就知道對(duì)點(diǎn)退出了,很多軟件都是這么做的,比如 hp-openview的sdk
6.不知在說(shuō)啥,網(wǎng)絡(luò)通信其實(shí)是個(gè)比較簡(jiǎn)單的過(guò)程 ,熟悉posix標(biāo)準(zhǔn)的socket api就可以了,不存在語(yǔ)言差異問(wèn)題

# re: MINA服務(wù)端與C++客戶端通訊(1)  回復(fù)  更多評(píng)論   

2011-07-08 09:26 by chugf
@放屁阿狗
非常感謝

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


posts - 5, comments - 22, trackbacks - 0, articles - 0

Copyright © chugf

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美韩日精品| 久久精品久久99精品久久| 亚洲激情不卡| 久久精品一级爱片| 久久久777| 欧美一区国产在线| 久久精品国产免费观看| 欧美怡红院视频| 蜜臀av性久久久久蜜臀aⅴ| 能在线观看的日韩av| 欧美~级网站不卡| 男女精品网站| 欧美在线看片| 欧美成人精品一区二区三区| 亚洲国产精品久久人人爱蜜臀| 影音先锋日韩精品| 夜色激情一区二区| 欧美一区二区三区免费看| 久久综合成人精品亚洲另类欧美| 欧美黄色一级视频| 免费久久99精品国产自| 久久精品综合| 欧美色综合天天久久综合精品| 国产麻豆一精品一av一免费| 激情国产一区| 亚洲欧美日韩国产成人| 乱码第一页成人| aaa亚洲精品一二三区| 久久九九久精品国产免费直播 | 亚洲久色影视| 亚洲欧美激情视频| 一区二区三区日韩精品视频| 久久国产精品毛片| 亚洲国产婷婷综合在线精品| 性欧美超级视频| 国产精品国色综合久久| 亚洲精品国产精品乱码不99按摩| 亚洲国产天堂网精品网站| 欧美黄色片免费观看| 亚洲综合日韩在线| 欧美肥婆bbw| 欧美日韩国产专区| 亚洲第一网站免费视频| 欧美一区二区在线免费观看| 亚洲精品国产精品乱码不99 | 国产精品一二一区| 亚洲国产一区二区精品专区| 久久精品国产免费观看| 亚洲午夜激情免费视频| 亚洲黄网站在线观看| 欧美在线免费视屏| 欧美日韩在线不卡一区| 亚洲三级电影在线观看| 欧美成人一品| 久久精品国产欧美亚洲人人爽 | 99视频精品在线| 久久精品日产第一区二区| 日韩午夜高潮| 欧美日韩国产大片| 99视频精品免费观看| 亚洲精品在线视频| 欧美精品国产| 亚洲一区二区网站| 亚洲午夜精品| 国产精品99一区| 亚洲香蕉网站| 中文精品视频| 国产精品videosex极品| 亚洲欧美激情诱惑| 亚洲欧美综合一区| 美女诱惑一区| 国产一区二区精品久久99| 欧美一区二区性| 亚洲一区综合| 国产视频一区二区在线观看| 久久精品一本久久99精品| 久久久夜色精品亚洲| 亚洲欧洲在线播放| 99精品视频一区| 国产亚洲一区二区三区| 美女网站久久| 欧美日韩亚洲一区二区三区四区| 日韩亚洲在线观看| 亚洲桃花岛网站| 狠久久av成人天堂| 亚洲精品三级| 好吊妞这里只有精品| 亚洲国产电影| 国产美女精品视频免费观看| 免费观看成人| 国产精品sss| 亚洲国产精品久久久久秋霞影院 | 欧美亚洲网站| 亚洲高清视频一区| 中文av字幕一区| 伊人男人综合视频网| 亚洲精品一线二线三线无人区| 国产精品亚洲综合天堂夜夜| 最近中文字幕日韩精品 | 亚洲第一精品福利| 欧美绝品在线观看成人午夜影视| 香蕉成人伊视频在线观看| 久久这里只精品最新地址| 亚洲午夜91| 免费在线看成人av| 久久精品综合网| 欧美日韩亚洲综合在线| 欧美成年人视频网站欧美| 国产精品视频一区二区高潮| 欧美+亚洲+精品+三区| 国产精品视频yy9099| 99re亚洲国产精品| 久久久999精品免费| 亚洲砖区区免费| 欧美好吊妞视频| 美女诱惑一区| 狠狠色综合播放一区二区| 亚洲天堂黄色| 一区二区毛片| 国产精品成人一区| 亚洲人体大胆视频| 亚洲福利av| 久久久久高清| 久久五月激情| 激情综合色综合久久| 亚洲永久免费视频| 亚洲免费视频观看| 欧美三级视频在线| 亚洲精品女av网站| 永久久久久久| 老牛影视一区二区三区| 麻豆精品传媒视频| 伊人久久婷婷色综合98网| 久久丁香综合五月国产三级网站| 国产一区二区三区久久悠悠色av| 亚洲影院免费观看| 性欧美videos另类喷潮| 国产日韩欧美不卡在线| 最新日韩在线视频| 99成人在线| 欧美三级黄美女| 亚洲免费伊人电影在线观看av| 欧美在线播放视频| 亚洲激情av| 欧美激情视频网站| 日韩亚洲视频| 欧美一区二区三区免费看| 国产亚洲欧洲一区高清在线观看| 亚洲欧美另类中文字幕| 免费观看30秒视频久久| 久久久久久久成人| 免费视频最近日韩| 亚洲精品国产精品国产自| 欧美日本高清| 午夜在线成人av| 欧美第一黄网免费网站| 亚洲精品自在久久| 国产精品美女久久久久av超清 | 性欧美18~19sex高清播放| 欧美在线亚洲在线| 樱花yy私人影院亚洲| 美女在线一区二区| 99综合精品| 久久免费的精品国产v∧| 亚洲靠逼com| 韩日精品视频一区| 欧美激情导航| 亚洲欧美国产高清va在线播| 美女视频网站黄色亚洲| 亚洲视频一二三| 国产日韩亚洲欧美精品| 麻豆成人91精品二区三区| 一区二区三区不卡视频在线观看| 久久久91精品国产一区二区精品| 亚洲欧洲一区二区三区| 国产精品久久久久久久久| 欧美国产国产综合| 亚洲肉体裸体xxxx137| 欧美一区二区观看视频| 雨宫琴音一区二区在线| 欧美私人网站| 亚洲欧洲精品一区| 久久爱www久久做| 亚洲美女av黄| 国产午夜精品美女视频明星a级| 欧美激情一区二区三区高清视频| 欧美一区视频| 亚洲深夜影院| 91久久精品久久国产性色也91| 亚洲欧美日韩高清| 久久深夜福利| 午夜精品一区二区三区在线| 亚洲激情啪啪| 尤物精品在线| 国产婷婷精品| 国产精品影视天天线| 欧美日韩中字| 欧美美女喷水视频| 欧美精品91| 欧美大色视频|