$scope.submitFile = function (){
//判断参数
var fileName = document.getElementById("file").value;
if(StringUtil.isBlank(fileName)){
toaster.pop("warning", "", "请选择文件");
return;
}
$scope.loading = true;
$scope.loadText = "正在上传中...";
$.ajaxFileUpload({
url: './question/XXXX', //用于文件上传的服务器端请求地址
secureuri: false, //是否需要安全协议,一般设置为false
fileElementId: 'file', //文件上传域的ID
dataType: 'json', //返回值类型 一般设置为json
success: function (data, status){ //服务器成功响应处理函数
$scope.loading = false;
if(data.header.statusCode == 'success' && !$scope.loading) {
if(StringUtil.isNotBlank(data.body) && StringUtil.isNotBlank(data.body.outPath)) {
outPath = data.body.outPath;
toaster.pop(data.header.statusCode.toLowerCase(), "", "文件上传成功,请选择题目分类");
return;
}
}else{
toaster.pop(data.header.statusCode.toLowerCase(), "", data.header.msgArray[0].desc);
return;
}
},
error: function (data, status, e){//服务器响应失败处理函数
$scope.loading = false;
toaster.pop(CommonUtil.TOASTER_WARNING, "", e);
return;
}
});
}
$scope.submitCode = function(){
if(StringUtil.isNotBlank(outPath)){
if(StringUtil.isBlank($scope.question_title)){
toaster.pop("warning", "", "请选择题目分类");
return;
}
if(StringUtil.isBlank($scope.question_category)){
toaster.pop("warning", "", "请选择题目类型");
return;
}
if($scope.question_category == "课文跟读"){//课文跟读
$scope.path = "./question/XXXX";
}else if($scope.question_category == "单词拼写"){//单词拼写
$scope.path = "./question/XXXX";
}else if($scope.question_category == "听音选词"){//听音选词
$scope.path = "./question/XXXX";
}else if($scope.question_category == "趣配音"){//趣配音
$scope.path = "./question/XXXX";
}
$scope.loading = true;
$scope.loadText = "正在上录入数据...";
$http.get($scope.path+"/?outPath="+outPath+"&title="+$scope.question_title).success(function(response) { //查找当前ID的分类信息
$scope.loading = false;
if(!$scope.loading){
if(StringUtil.isNotBlank(response.body) && StringUtil.isNotBlank(response.body.createdNum)) {
$scope.createdNum = response.body.createdNum;
}else {
$scope.createdNum = 0;
}
toaster.pop(response.header.statusCode.toLowerCase(), "", "成功录入或更新 "+$scope.createdNum+" 行数据");
$modalInstance.close(); //关闭模态框
refresh();
}
}).error(function(response) {
$scope.loading = false;
toaster.pop(response.header.statusCode.toLowerCase(), "", response.header.msgArray[0].desc);
});
}else{
toaster.pop("warning", "", "请先上传文件");
return;
}
}
$scope.cancelCodeCreate = function() { //取消
$modalInstance.dismiss('cancel');
}
}
});
}
MINA是一个用Java编写的高性能网络通信框架,可以用于开发各种类型的服务器和客户端应用程序。如果您要使用MINA客户端与C++服务器端通信,有多种方案可以选择,具体取决于您的具体需求和技术栈。
以下是一些可能的方案:
使用TCP协议进行通信。MINA提供了一套TCP协议的实现,您可以使用它来与C++服务器进行通信。您需要在C++服务器端使用相应的TCP库来实现服务器端的网络通信。一些流行的C++ TCP库包括Boost.Asio和libevent。
使用UDP协议进行通信。如果您的应用程序需要快速、低延迟的通信,可以考虑使用UDP协议进行通信。MINA也提供了一套UDP协议的实现,您可以使用它来与C++服务器进行通信。您需要在C++服务器端使用相应的UDP库来实现服务器端的网络通信。一些流行的C++ UDP库包括Boost.Asio和libevent。
使用WebSocket协议进行通信。如果您需要在客户端和服务器端之间实现双向通信,可以考虑使用WebSocket协议进行通信。MINA提供了一套WebSocket协议的实现,您可以使用它来与C++服务器进行通信。您需要在C++服务器端使用相应的WebSocket库来实现服务器端的网络通信。一些流行的C++ WebSocket库包括uWebSockets和libwebsockets。
使用消息队列进行通信。如果您需要在客户端和服务器端之间实现异步通信,可以考虑使用消息队列进行通信。您可以在MINA客户端和C++服务器端之间使用一个共享的消息队列,并在消息队列中传递数据。一些流行的C++消息队列包括RabbitMQ和ZeroMQ。
需要注意的是,这些方案各有优缺点,具体选择取决于您的具体需求和技术栈。您需要仔细评估每种方案的优缺点,并选择最适合您的应用程序的方案。