Java socket通信與C++之間的關(guān)系是什么,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
創(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ù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(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)和眾多成功案例,為您定制開(kāi)發(fā)。
c++builer與Java socket通信是我們?cè)诰幊讨薪?jīng)常用到的,有不少的人還有很多問(wèn)題需要解決。下面我們就來(lái)看看如何解決有關(guān)于Java socket通信與C++之間的相關(guān)問(wè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
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <winsock.h>
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ServerSocket1->Active = true;
}
void __fastcall TForm1::BtnSendClick(TObject *Sender)
{
//發(fā)送的數(shù)據(jù)要進(jìn)行字節(jié)序轉(zhuǎn)換.
TMyMsg sendmsg;
sendmsg.int1 = htonl(30);
sendmsg.f = ntohf(12.345);
strcpy(sendmsg.ch,"測(cè)試數(shù)據(jù)!");
sendmsg.d = ntohd(67.890);
ServerSocket1->Socket->Connections[0]->SendBuf(&sendmsg,
sizeof(TMyMsg));}
void __fastcall TForm1::FormShow(TObject *Sender)
{
MemoSend->Lines->Add("int : 30");
MemoSend->Lines->Add("float : 12.345");
MemoSend->Lines->Add("char [20] : 測(cè)試數(shù)據(jù)!");
MemoSend->Lines->Add("double : 67.890");
}
void __fastcall TForm1::ServerSocket1ClientRead(TObject
*Sender,TCustomWinSocket *Socket)
{
//接收的數(shù)據(jù)字節(jié)序轉(zhuǎn)換
TMyMsg remsg;
Socket->ReceiveBuf(&remsg,sizeof(TMyMsg));
int int1 = ntohl(remsg.int1);
float f = ntohf(remsg.f);
char *ch = new char[20];
strcpy(ch,remsg.ch);
AnsiString sch = StrPas(ch);
double d = ntohd(remsg.d);
delete [] ch;
MemoRec->Lines->Add(int1);
MemoRec->Lines->Add(f);
MemoRec->Lines->Add(sch.Trim());
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)頁(yè)題目:Javasocket通信與C++之間的關(guān)系是什么
網(wǎng)站路徑:http://jinyejixie.com/article40/pppgeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、搜索引擎優(yōu)化、建站公司、做網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、軟件開(kāi)發(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)