Javasocket通信與C++之間的關(guān)系是什么

Java socket通信與C++之間的關(guān)系是什么,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

創(chuàng)新互聯(lián)建站長(zhǎng)期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為鄒平企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),鄒平網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

c++builer與Java socket通信是我們?cè)诰幊讨薪?jīng)常用到的,有不少的人還有很多問題需要解決。下面我們就來看看如何解決有關(guān)于Java socket通信與C++之間的相關(guān)問題。希望大家有所了解。

C++builer與Java都提供了功能豐富的socket控件/類。這里將實(shí)現(xiàn)c++builer與Java之間的socket通信,能夠使雙方互相發(fā)送信息。在C++builer里,我們采用 ServerSocket控件做為服務(wù)器端,Java socket通信里采用Socket類做為客戶端。本示例中互相發(fā)送的都為結(jié)構(gòu)體,在C++builer里定義為:

typedef struct  {  int int1;  float f;  char ch[20];  double d;  } TMyMsg;

Java里發(fā)送部分是直接用的DataOutputStream 的writeXXX方法,當(dāng)然也可以用內(nèi)部類轉(zhuǎn)換成byte[]進(jìn)行發(fā)送。

源代碼如下:

C++builer服務(wù)器端Unit1.cpp

  1. #include <vcl.h> 

  2. #pragma hdrstop  

  3. #include "Unit1.h"  

  4. #include <winsock.h> 

  5. #pragma package(smart_init)  

  6. #pragma resource "*.dfm"  

  7. TForm1 *Form1;  

  8. __fastcall TForm1::TForm1(TComponent* Owner)  

  9. : TForm(Owner)  

  10. {  

  11. }  

  12. void __fastcall TForm1::Button1Click(TObject *Sender)  

  13. {  

  14. ServerSocket1->Active = true;  

  15. }  

  16. void __fastcall TForm1::BtnSendClick(TObject *Sender)  

  17. {  

  18. //發(fā)送的數(shù)據(jù)要進(jìn)行字節(jié)序轉(zhuǎn)換.  

  19. TMyMsg sendmsg;  

  20. sendmsg.int1 = htonl(30);  

  21. sendmsg.f = ntohf(12.345);  

  22. strcpy(sendmsg.ch,"測(cè)試數(shù)據(jù)!");  

  23. sendmsg.d = ntohd(67.890);  

  24. ServerSocket1->Socket->Connections[0]->SendBuf(&sendmsg, 
    sizeof(TMyMsg));  

  25. }  

  26. void __fastcall TForm1::FormShow(TObject *Sender)  

  27. {  

  28. MemoSend->Lines->Add("int : 30");  

  29. MemoSend->Lines->Add("float : 12.345");  

  30. MemoSend->Lines->Add("char [20] : 測(cè)試數(shù)據(jù)!");  

  31. MemoSend->Lines->Add("double : 67.890");  

  32. }  

  33. void __fastcall TForm1::ServerSocket1ClientRead(TObject 
    *Sender,  

  34. TCustomWinSocket *Socket)  

  35. {  

  36. //接收的數(shù)據(jù)字節(jié)序轉(zhuǎn)換  

  37. TMyMsg remsg;  

  38. Socket->ReceiveBuf(&remsg,sizeof(TMyMsg));  

  39. int int1 = ntohl(remsg.int1);  

  40. float f = ntohf(remsg.f);  

  41. char *ch = new char[20];  

  42. strcpy(ch,remsg.ch);  

  43. AnsiString sch = StrPas(ch);  

  44. double d = ntohd(remsg.d);  

  45. delete [] ch;  

  46. MemoRec->Lines->Add(int1);  

  47. MemoRec->Lines->Add(f);  

  48. MemoRec->Lines->Add(sch.Trim());  

  49. MemoRec->Lines->Add(d);  

看完上述內(nèi)容,你們掌握J(rèn)ava socket通信與C++之間的關(guān)系是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁題目:Javasocket通信與C++之間的關(guān)系是什么
網(wǎng)站路徑:http://muchs.cn/article40/pppgeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化搜索引擎優(yōu)化、建站公司做網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司