EXEU通过argv把客户数据传递代码值.docx

上传人:b****5 文档编号:11703561 上传时间:2023-03-30 格式:DOCX 页数:30 大小:24.80KB
下载 相关 举报
EXEU通过argv把客户数据传递代码值.docx_第1页
第1页 / 共30页
EXEU通过argv把客户数据传递代码值.docx_第2页
第2页 / 共30页
EXEU通过argv把客户数据传递代码值.docx_第3页
第3页 / 共30页
EXEU通过argv把客户数据传递代码值.docx_第4页
第4页 / 共30页
EXEU通过argv把客户数据传递代码值.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

EXEU通过argv把客户数据传递代码值.docx

《EXEU通过argv把客户数据传递代码值.docx》由会员分享,可在线阅读,更多相关《EXEU通过argv把客户数据传递代码值.docx(30页珍藏版)》请在冰豆网上搜索。

EXEU通过argv把客户数据传递代码值.docx

EXEU通过argv把客户数据传递代码值

处里客户端发来的请求,其中数值计算逻辑可执行程序比如EXEU通过argv把客户数据传递过去,获得计算结果返回客户端socket->async_write_some(buffer(respData),boost:

:

bind(&this_type:

:

write_handler,this,boost:

:

asio:

:

placeholders:

:

error));

}else{//如果客户端不发送数据包结束后缀,会造成接收的数据包无限增大,加入数据自动废弃功能

if(recvData.size()>255){

recvData.clear();

socket->async_write_some(buffer("dataistoolong,autodelete."),boost:

:

bind(&this_type:

:

write_handler,this,boost:

:

asio:

:

placeholders:

:

error));

}else{//为收到完整数据包,继续接收数据

socket->async_read_some(buffer(m_buf),bind(&this_type:

:

read_handler,this,boost:

:

asio:

:

placeholders:

:

error,boost:

:

asio:

:

placeholders:

:

bytes_transferred));

}

}

}

//

stringprocessPackage(conststringpackage){

cout<<"Recivedatafrom:

"<

"<

vectorvec;

split(vec,package,is_any_of(delims),token_compress_on);

stringresult;

try{

doublesum=0;

for(inti=0;i

//cout<

"<

:

stod(vec[i])<

sum+=std:

:

stod(vec[i]);

}

result=boost:

:

join(vec,"+")+"="+boost:

:

lexical_cast(sum);

}catch(std:

:

exceptione){

result="发送的数据包内包含非法数字";

}

returnstd:

:

move(result);

}

boolisclose(){

returnstate=="close";

}

boolisexpire(){

return(std:

:

chrono:

:

system_clock:

:

now()-lasttime)>deadline;

}

};

classServer{//网络服务业务逻辑全部在Server类中,客户端连接后自动创建一个peer

typedefServerthis_type;

private:

io_servicem_io;

acceptor_typem_acceptor;

boost:

:

asio:

:

steady_timertimer;

std:

:

map

:

shared_ptr>m_peers;

voidstartTimer(){

timer.expires_from_now(std:

:

chrono:

:

seconds

(1));

timer.async_wait(boost:

:

bind(&this_type:

:

onTimer,this,boost:

:

asio:

:

placeholders:

:

error));

}

voidonTimer(constsystem:

:

error_code&){

for(autoiter=m_peers.begin();iter!

=m_peers.end();){

if(iter->second->isclose()||iter->second->isexpire()){

cout<second->getPeerName()<<"isclosed."<

m_peers.erase(iter++);

}else{

iter++;

}

}

startTimer();

}

[代码][GoogleGo]代码

packagemain

import(

"io/ioutil"

"net/http"

"net/"

"fmt"

"encoding/json"

//----------------------------------

//黄金数据调用示例代码-聚合数据

//在线接口文档:

www/docs/29

//----------------------------------

constAPPKEY="*******************"//您申请的APPKEY

funcmain(){

//1.上海黄金交易所

Request1()

//2.上海期货交易所

Request2()

//3.银行账户黄金

Request3()

}

//1.上海黄金交易所

funcRequest1(){

//请求地址

juhe:

="web:

8080/finance/gold/shgold"

//初始化参数

param:

=.Values{}

//配置请求参数,方法内部已处理encode问题,中文参数可以直接传参

param.Set("key",APPKEY)//APPKey

param.Set("v","")//JSON格式版本(0或1)默认为0

 

//发送请求

data,err:

=Get(juhe,param)

iferr!

=nil{

fmt.Errorf("请求失败,错误信息:

\r\n%v",err)

}else{

varnetReturnmap[string]interface{}

json.Unmarshal(data,&netReturn)

ifnetReturn["error_code"].(float64)==0{

fmt.Printf("接口返回result字段是:

\r\n%v",netReturn["result"])

}

}

}

//2.上海期货交易所

funcRequest2(){

//请求地址

juhe:

="web:

8080/finance/gold/shfuture"

//初始化参数

param:

=.Values{}

//配置请求参数,方法内部已处理encode问题,中文参数可以直接传参

param.Set("key",APPKEY)//APPKey

param.Set("v","")//JSON格式版本(0或1)默认为0

 

//发送请求

data,err:

=Get(juhe,param)

iferr!

=nil{

fmt.Errorf("请求失败,错误信息:

\r\n%v",err)

}else{

varnetReturnmap[string]interface{}

json.Unmarshal(data,&netReturn)

ifnetReturn["error_code"].(float64)==0{

fmt.Printf("接口返回result字段是:

\r\n%v",netReturn["result"])

}

}

}

//3.银行账户黄金

funcRequest3(){

//请求地址

juhe:

="web:

8080/finance/gold/bankgold"

//初始化参数

param:

=.Values{}

//配置请求参数,方法内部已处理encode问题,中文参数可以直接传参

param.Set("key",APPKEY)//APPKey

 

//发送请求

data,err:

=Get(juhe,param)

iferr!

=nil{

fmt.Errorf("请求失败,错误信息:

\r\n%v",err)

}else{

varnetReturnmap[string]interface{}

json.Unmarshal(data,&netReturn)

ifnetReturn["error_code"].(float64)==0{

fmt.Printf("接口返回result字段是:

\r\n%v",netReturn["result"])

}

}

}

//get网络请求

funcGet(apistring,params.Values)(rs[]byte,errerror){

var*.

err=.Parse(api)

iferr!

=nil{

fmt.Printf("解析错误:

\r\n%v",err)

returnnil,err

}

//如果参数中有中文参数,这个方法会进行Encode

.RawQuery=params.Encode()

resp,err:

=http.Get(.String())

iferr!

=nil{

fmt.Println("err:

",err)

returnnil,err

}

deferresp.Body.Close()

returnioutil.ReadAll(resp.Body)

}

//post网络请求,params是.Values类型

funcPost(apistring,params.Values)(rs[]byte,errerror){

resp,err:

=http.PostForm(api,params)

iferr!

=nil{

returnnil,err

}

deferresp.Body.Close()

returnioutil.ReadAll(resp.Body)

}

代码描述:

基于GO的黄金数据接口调用代码实例

关联数据:

黄金数据

[代码][C#]代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Net;

usingSystem.IO;

usingXfrog.Net;

usingSystem.Diagnostics;

usingSystem.Web;

//----------------------------------

//黄金数据调用示例代码-聚合数据

//在线接口文档:

www/docs/29

//代码中JsonObject类下载地址:

//----------------------------------

namespaceConsoleAPI

{

classProgram

{

staticvoidMain(string[]args)

{

stringappkey="*******************";//配置您申请的appkey

 

//1.上海黄金交易所

string1="web:

8080/finance/gold/shgold";

varparameters1=newDictionary();

parameters1.Add("key",appkey);//你申请的key

parameters1.Add("v","");//JSON格式版本(0或1)默认为0

stringresult1=sendPost(1,parameters1,"get");

JsonObjectnewObj1=newJsonObject(result1);

StringerrorCode1=newObj1["error_code"].Value;

if(errorCode1=="0")

{

Debug.WriteLine("成功");

Debug.WriteLine(newObj1);

}

else

{

//Debug.WriteLine("失败");

Debug.WriteLine(newObj1["error_code"].Value+":

"+newObj1["reason"].Value);

}

 

//2.上海期货交易所

string2="web:

8080/finance/gold/shfuture";

varparameters2=newDictionary();

parameters2.Add("key",appkey);//你申请的key

parameters2.Add("v","");//JSON格式版本(0或1)默认为0

stringresult2=sendPost(2,parameters2,"get");

JsonObjectnewObj2=newJsonObject(result2);

StringerrorCode2=newObj2["error_code"].Value;

if(errorCode2=="0")

{

Debug.WriteLine("成功");

Debug.WriteLine(newObj2);

}

else

{

//Debug.WriteLine("失败");

Debug.WriteLine(newObj2["error_code"].Value+":

"+newObj2["reason"].Value);

}

 

//3.银行账户黄金

string3="web:

8080/finance/gold/bankgold";

varparameters3=newDictionary();

parameters3.Add("key",appkey);//你申请的key

stringresult3=sendPost(3,parameters3,"get");

JsonObjectnewObj3=newJsonObject(result3);

StringerrorCode3=newObj3["error_code"].Value;

if(errorCode3=="0")

{

Debug.WriteLine("成功");

Debug.WriteLine(newObj3);

}

else

{

//Debug.WriteLine("失败");

Debug.WriteLine(newObj3["error_code"].Value+":

"+newObj3["reason"].Value);

}

 

}

///

///Http(GET/POST)

///

///请求

///请求参数

///请求方法

///响应内容

staticstringsendPost(string,IDictionaryparameters,stringmethod)

{

if(method.ToLower()=="post")

{

HttpWebRequestreq=null;

HttpWebResponsersp=null;

System.IO.StreamreqStream=null;

try

{

req=(HttpWebRequest)WebRequest.Create();

req.Method=method;

req.KeepAlive=false;

req.ProtocolVersion=HttpVersion.Version10;

req.Timeout=5000;

req.ContentType="application/x-www-form-encoded;charset=utf-8";

byte[]postData=Encoding.UTF8.GetBytes(BuildQuery(parameters,"utf8"));

reqStream=req.GetRequestStream();

reqStream.Write(postData,0,postData.Length);

rsp=(HttpWebResponse)req.GetResponse();

Encodingencoding=Encoding.GetEncoding(rsp.CharacterSet);

returnGetResponseAsString(rsp,encoding);

}

catch(Exceptionex)

{

returnex.Message;

}

finally

{

if(reqStream!

=null)reqStream.Close();

if(rsp!

=null)rsp.Close();

}

}

else

{

//创建请求

HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(+"?

"+BuildQuery(parameters,"utf8"));

//GET请求

request.Method="GET";

request.ReadWriteTimeout=5000;

request.ContentType="text/html;charset=UTF-8";

HttpWebResponseresponse=(HttpWebResponse)request.GetResponse();

StreammyResponseStream=response.GetResponseStream();

StreamReadermyStreamReader=newStreamReader(myResponseStream,Encoding.GetEncoding("utf-8"));

//返回内容

stringretString=myStreamReader.ReadToEnd();

returnretString;

}

}

///

///组装普通文本请求参数。

///

///Key-Value形式请求参数字典

///编码后的请求数据

staticstringBuildQuery(IDictionaryparameters,stringencode)

{

StringBuilderpostData=newStringBuilder();

boolhasParam=false;

IEnumerator>dem=parameters.GetEnumerator();

while(dem.MoveNext())

{

stringname=dem.Current.Key;

stringvalue=dem.Current.Value;

//忽略参数名或参数值为空的参数

if(!

string.IsNullOrEmpty(name))//&&!

string.IsNullOrEmpty(value)

{

if(hasParam)

{

postData.Append("&");

}

postData.Append(name);

postData.Append("=");

if(encode=="gb2312")

{

postData.Append(HttpUtility.Encode(value,Encoding.GetEncoding("gb2312")));

}

elseif(encode=="utf8")

{

postData.Append(HttpUtility.Encode(value,Encoding.UTF8));

}

else

{

postData.Append(value);

}

hasParam=true;

}

}

returnpostData.ToString();

}

///

///把响应流转换为文本。

///

///响应流对象

///编码方式

///响应文本

staticstringGetResponseAsString(HttpWebResponsersp,Encodingencoding)

{

System.IO.Streamstream=null;

StreamReaderreader=null;

try

{

//以字符流的方式读取HTTP响应

stream=rsp.GetResponseStream();

reader=newStreamReader(stream,encoding);

returnreader.ReadToEnd();

}

finally

{

//释放资源

if(reader!

=null)reader.Close();

if(stream!

=null)stream.Close();

if(rsp!

=null)rsp.Close();

}

}

}

}

[代码][PHP]代码

/**

*c远程传输工具

*/

publicfunctionpost_c($,$b

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1