EXEU通過argv把客戶數(shù)據(jù)傳遞代碼值_第1頁
EXEU通過argv把客戶數(shù)據(jù)傳遞代碼值_第2頁
EXEU通過argv把客戶數(shù)據(jù)傳遞代碼值_第3頁
EXEU通過argv把客戶數(shù)據(jù)傳遞代碼值_第4頁
EXEU通過argv把客戶數(shù)據(jù)傳遞代碼值_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 處里客戶端發(fā)來的請求,其中數(shù)值計(jì)算邏輯可執(zhí)行程序比如EXEU 通過argv把客戶數(shù)據(jù)傳遞過去,獲得計(jì)算結(jié)果返回客戶端 socket->async_write_some(buffer(respData),boost:bind(&this_type:write_handler,this,boost:asio:placeholders:error); else/如果客戶端不發(fā)送數(shù)據(jù)包結(jié)束后綴,會(huì)造成接收的數(shù)據(jù)包無限增大,加入數(shù)據(jù)自動(dòng)廢棄功能 if(recvData.size()>255) recvData.clear(); socket->async_write_some

2、(buffer("data is too long,auto delete."),boost:bind(&this_type:write_handler,this,boost:asio:placeholders:error); else/為收到完整數(shù)據(jù)包,繼續(xù)接收數(shù)據(jù) socket->async_read_some(buffer(m_buf),bind(&this_type:read_handler,this,boost:asio:placeholders:error,boost:asio:placeholders:bytes_transferred)

3、; / string processPackage(const string package) cout<<"Recive data from:"<<peerName<<" data:"<<package<<endl; vector<string> vec; split(vec,package,is_any_of(delims),token_compress_on); string result; try double sum=0; for(int i=0;i<vec.size

4、();i+) /cout<<veci<<":"<<std:stod(veci)<<endl; sum+=std:stod(veci); result=boost:join(vec,"+")+"="+boost:lexical_cast<string>(sum); catch(std:exception e) result="發(fā)送的數(shù)據(jù)包內(nèi)包含非法數(shù)字" return std:move(result); bool isclose() return state

5、="close" bool isexpire() return (std:chrono:system_clock:now()-lasttime)>deadline; ;class Server/網(wǎng)絡(luò)服務(wù)業(yè)務(wù)邏輯全部在Server類中,客戶端連接后自動(dòng)創(chuàng)建一個(gè)peer typedef Server this_type;private: io_service m_io; acceptor_type m_acceptor; boost:asio:steady_timer timer; std:map<string,std:shared_ptr<Peer>&

6、gt; m_peers; void startTimer() timer.expires_from_now(std:chrono:seconds(1); timer.async_wait(boost:bind(&this_type:onTimer,this,boost:asio:placeholders:error); void onTimer(const system:error_code&) for(auto iter=m_peers.begin();iter!=m_peers.end();) if(iter->second->isclose()|iter-&g

7、t;second->isexpire() cout<<iter->second->getPeerName()<<" is closed."<<endl; m_peers.erase(iter+); else iter+; startTimer(); 代碼 Google Go代碼 package mainimport ( "io/ioutil" "net/http" "net/" "fmt" "encoding/json")

8、 /-/ 黃金數(shù)據(jù)調(diào)用示例代碼 聚合數(shù)據(jù)/ 在線接口文檔:www/docs/29/- const APPKEY = "*" /您申請的APPKEY func main() /1.上海黃金交易所 Request1() /2.上海期貨交易所 Request2() /3.銀行賬戶黃金 Request3() /1.上海黃金交易所func Request1() /請求地址 juhe :="web:8080/finance/gold/shgold" /初始化參數(shù) param:=.Values /配置請求參數(shù),方法內(nèi)部已處理encode問題,中文參數(shù)可以直接傳參 pa

9、ram.Set("key",APPKEY) /APP Key param.Set("v","") /JSON格式版本(0或1)默認(rèn)為0 /發(fā)送請求 data,err:=Get(juhe,param) if err!=nil fmt.Errorf("請求失敗,錯(cuò)誤信息:rn%v",err) else var netReturn mapstringinterface json.Unmarshal(data,&netReturn) if netReturn"error_code".(float

10、64)=0 fmt.Printf("接口返回result字段是:rn%v",netReturn"result") /2.上海期貨交易所func Request2() /請求地址 juhe :="web:8080/finance/gold/shfuture" /初始化參數(shù) param:=.Values /配置請求參數(shù),方法內(nèi)部已處理encode問題,中文參數(shù)可以直接傳參 param.Set("key",APPKEY) /APP Key param.Set("v","") /JS

11、ON格式版本(0或1)默認(rèn)為0 /發(fā)送請求 data,err:=Get(juhe,param) if err!=nil fmt.Errorf("請求失敗,錯(cuò)誤信息:rn%v",err) else var netReturn mapstringinterface json.Unmarshal(data,&netReturn) if netReturn"error_code".(float64)=0 fmt.Printf("接口返回result字段是:rn%v",netReturn"result") /3.銀行

12、賬戶黃金func Request3() /請求地址 juhe :="web:8080/finance/gold/bankgold" /初始化參數(shù) param:=.Values /配置請求參數(shù),方法內(nèi)部已處理encode問題,中文參數(shù)可以直接傳參 param.Set("key",APPKEY) /APP Key /發(fā)送請求 data,err:=Get(juhe,param) if err!=nil fmt.Errorf("請求失敗,錯(cuò)誤信息:rn%v",err) else var netReturn mapstringinterface

13、 json.Unmarshal(data,&netReturn) if netReturn"error_code".(float64)=0 fmt.Printf("接口返回result字段是:rn%v",netReturn"result") / get 網(wǎng)絡(luò)請求func Get(api string,params .Values)(rsbyte ,err error) var *. ,err=.Parse(api) if err!=nil fmt.Printf("解析錯(cuò)誤:rn%v",err) return

14、 nil,err /如果參數(shù)中有中文參數(shù),這個(gè)方法會(huì)進(jìn)行Encode .RawQuery=params.Encode() resp,err:=http.Get(.String() if err!=nil fmt.Println("err:",err) return nil,err defer resp.Body.Close() return ioutil.ReadAll(resp.Body) / post 網(wǎng)絡(luò)請求 ,params 是.Values類型func Post(api string, params .Values)(rsbyte,err error) resp,e

15、rr:=http.PostForm(api, params) if err!=nil return nil ,err defer resp.Body.Close() return ioutil.ReadAll(resp.Body)代碼描述:基于GO的黃金數(shù)據(jù)接口調(diào)用代碼實(shí)例關(guān)聯(lián)數(shù)據(jù):黃金數(shù)據(jù)代碼 C#代碼 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.IO;using Xfrog.Net;using System.Di

16、agnostics;using System.Web; /-/ 黃金數(shù)據(jù)調(diào)用示例代碼 聚合數(shù)據(jù)/ 在線接口文檔:www/docs/29/ 代碼中JsonObject類下載地址:/- namespace ConsoleAPI class Program static void Main(string args) string appkey = "*" /配置您申請的appkey /1.上海黃金交易所 string 1 = "web:8080/finance/gold/shgold" var parameters1 = new Dictionary<s

17、tring, string>(); parameters1.Add("key", appkey);/你申請的key parameters1.Add("v" , ""); /JSON格式版本(0或1)默認(rèn)為0 string result1 = sendPost(1, parameters1, "get"); JsonObject newObj1 = new JsonObject(result1); String errorCode1 = newObj1"error_code".Value;

18、if (errorCode1 = "0") Debug.WriteLine("成功"); Debug.WriteLine(newObj1); else /Debug.WriteLine("失敗"); Debug.WriteLine(newObj1"error_code".Value+":"+newObj1"reason".Value); /2.上海期貨交易所 string 2 = "web:8080/finance/gold/shfuture" var p

19、arameters2 = new Dictionary<string, string>(); parameters2.Add("key", appkey);/你申請的key parameters2.Add("v" , ""); /JSON格式版本(0或1)默認(rèn)為0 string result2 = sendPost(2, parameters2, "get"); JsonObject newObj2 = new JsonObject(result2); String errorCode2 = newOb

20、j2"error_code".Value; if (errorCode2 = "0") Debug.WriteLine("成功"); Debug.WriteLine(newObj2); else /Debug.WriteLine("失敗"); Debug.WriteLine(newObj2"error_code".Value+":"+newObj2"reason".Value); /3.銀行賬戶黃金 string 3 = "web:8080/fi

21、nance/gold/bankgold" var parameters3 = new Dictionary<string, string>(); parameters3.Add("key", appkey);/你申請的key string result3 = sendPost(3, parameters3, "get"); JsonObject newObj3 = new JsonObject(result3); String errorCode3 = newObj3"error_code".Value; if

22、(errorCode3 = "0") Debug.WriteLine("成功"); Debug.WriteLine(newObj3); else /Debug.WriteLine("失敗"); Debug.WriteLine(newObj3"error_code".Value+":"+newObj3"reason".Value); / <summary> / Http (GET/POST) / </summary> / <param name=&

23、quot;">請求</param> / <param name="parameters">請求參數(shù)</param> / <param name="method">請求方法</param> / <returns>響應(yīng)內(nèi)容</returns> static string sendPost(string , IDictionary<string, string> parameters, string method) if (method.ToLowe

24、r() = "post") HttpWebRequest req = null; HttpWebResponse rsp = null; System.IO.Stream reqStream = null; try req = (HttpWebRequest)WebRequest.Create(); req.Method = method; req.KeepAlive = false; req.ProtocolVersion = HttpVersion.Version10; req.Timeout = 5000; req.ContentType = "applic

25、ation/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(); Encoding encoding = Encoding.GetEncoding(rsp.Char

26、acterSet); return GetResponseAsString(rsp, encoding); catch (Exception ex) return ex.Message; finally if (reqStream != null) reqStream.Close(); if (rsp != null) rsp.Close(); else /創(chuàng)建請求 HttpWebRequest request = (HttpWebRequest)WebRequest.Create( + "?" + BuildQuery(parameters, "utf8&quo

27、t;); /GET請求 request.Method = "GET" request.ReadWriteTimeout = 5000; request.ContentType = "text/html;charset=UTF-8" HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamR

28、eader(myResponseStream, Encoding.GetEncoding("utf-8"); /返回內(nèi)容 string retString = myStreamReader.ReadToEnd(); return retString; / <summary> / 組裝普通文本請求參數(shù)。 / </summary> / <param name="parameters">Key-Value形式請求參數(shù)字典</param> / <returns>編碼后的請求數(shù)據(jù)</returns&

29、gt; static string BuildQuery(IDictionary<string, string> parameters, string encode) StringBuilder postData = new StringBuilder(); bool hasParam = false; IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator(); while (dem.MoveNext() string name = dem.Current.Key;

30、string value = dem.Current.Value; / 忽略參數(shù)名或參數(shù)值為空的參數(shù) if (!string.IsNullOrEmpty(name)/&& !string.IsNullOrEmpty(value) if (hasParam) postData.Append("&"); postData.Append(name); postData.Append("="); if (encode = "gb2312") postData.Append(HttpUtility.Encode(valu

31、e, Encoding.GetEncoding("gb2312"); else if (encode = "utf8") postData.Append(HttpUtility.Encode(value, Encoding.UTF8); else postData.Append(value); hasParam = true; return postData.ToString(); / <summary> / 把響應(yīng)流轉(zhuǎn)換為文本。 / </summary> / <param name="rsp">響

32、應(yīng)流對象</param> / <param name="encoding">編碼方式</param> / <returns>響應(yīng)文本</returns> static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding) System.IO.Stream stream = null; StreamReader reader = null; try / 以字符流的方式讀取HTTP響應(yīng) stream = rsp.GetResponseStr

33、eam(); reader = new StreamReader(stream, encoding); return reader.ReadToEnd(); finally / 釋放資源 if (reader != null) reader.Close(); if (stream != null) stream.Close(); if (rsp != null) rsp.Close(); 代碼 PHP代碼 /* * c遠(yuǎn)程傳輸工具 */public function post_c($,$body,$header,$type='POST') $ch = c_init(); c_s

34、etopt($ch,COPT_,$); c_setopt($ch,COPT_HEADER,0);/0只要正文 c_setopt($ch,COPT_TIMEOUT,5);/設(shè)置超時(shí)時(shí)間 c_setopt($ch,COPT_CONNECTTIMEOUT,5); /將c_exec()獲取的信息以文件流的形式返回,而不是直接輸出。 c_setopt($ch,COPT_RETURNTRANSFER,1); /增加header頭信息 / array_push($header,'Accept:application/json'); / array_push($header,'Cont

35、ent-Type:application/json'); / array_push($header,'http:multipart/form-data'); if(count($body)>0) c_setopt($ch,COPT_POSTFIELDS,$body); if(count($header)>0) c_setopt($ch,COPT_HTTPHEADER,$header); /設(shè)置上傳文件相關(guān) c_setopt($ch,COPT_FOLLOWLOCATION,true); c_setopt($ch,COPT_MAXREDIRS,3);/遞歸 c_

36、setopt($ch,COPT_SSL_VERIFYPEER,false);/ 對認(rèn)證證書來源的檢查 c_setopt($ch,COPT_SSL_VERIFYHOST,0);/ 從證書中檢查SSL加密算法 switch ($type) case 'GET': c_setopt($ch,COPT_HTTPGET,1); break; case 'POST': c_setopt($ch,COPT_POST,1); break; case 'PUT': c_setopt($ch,COPT_CUSTOMREQUEST,'PUT'); br

37、eak; case 'DELETE': c_setopt($ch,COPT_CUSTOMREQUEST,'DELETE'); break; /上傳文件相關(guān)設(shè)置 c_setopt($ch,COPT_ENCODING,'gzip'); c_setopt($ch,COPT_USERAGENT,'SSTS Browser/1.0'); c_setopt($ch,COPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)');

38、/ 模擬用戶使用的瀏覽器 if(c_errno($ch) return c_error($ch); $content = c_exec($ch); c_close($ch);/關(guān)閉c資源,并且釋放系統(tǒng)資源 $result = json_decode($content,true); if(!empty($result) return $result; else return $content; 代碼 C/C+代碼 /*編譯指令$ /opt/sybase/OCS-16_0/bin/cpre64 -m teststu.cp$ cc -m64 -g -DSYB_LP64 -I. -I/opt/syba

39、se/OCS-16_0/include teststu.c /opt/sybase/OCS-16_0/include/sybesql.c -L/opt/sybase/OCS-16_0/lib -lsybct64 -lsybtcl64 -lsybcs64 -lsybcomn64 -lsybintl64 -lsybunic64 -rdynamic -ldl -lnsl -lm -o teststu*/#include <stdio.h> /*建立通訊區(qū)域*/EXEC SQL INCLUDE SQLCA;/* * These tokens must be declared in a de

40、clare section* because they are used in declare sections below.*/EXEC SQL BEGIN DECLARE SECTION;#define TYPESIZE 13#define TIDSIZE 6EXEC SQL END DECLARE SECTION; #define EOLN '0'/* * Forward declarations of the error and message handlers and* other subroutines called from main().*/void error

41、_handler();void warning_handler(); intmain(int argc, char *argv)/*聲明宿主變量*/ EXEC SQL BEGIN DECLARE SECTION; /* storage for login name and password. */ char username30; char sname30; char password30; char server30; EXEC SQL END DECLARE SECTION;/*錯(cuò)誤處理*/ EXEC SQL WHENEVER SQLERROR CALL error_handler();

42、EXEC SQL WHENEVER SQLWARNING CALL warning_handler(); EXEC SQL WHENEVER NOT FOUND CONTINUE;/*連接到 SQL SERVER 服務(wù)器*/ /* * Copy the user name and password defined in sybsqlex.h to * the variables declared for them in the declare section. */ strcpy(username, "mymotif"); strcpy(password, "wx

43、wpxh"); strcpy(server, "MYMOTIFVOSTRO145480"); EXEC SQL CONNECT :username IDENTIFIED BY :password using :server; EXEC SQL USE testdb; EXEC SQL DECLARE c1 CURSOR FOR SELECT SNAME FROM STUDENT; EXEC SQL OPEN c1; printf("name in table studentn"); do EXEC SQL FETCH c1 INTO :snam

44、e; if (sqlca.sqlcode != 0) break; printf( "student name = %sn", sname ); while ( 1 ); EXEC SQL CLOSE c1; return(0); /*錯(cuò)誤處理程序*/* void error_handler()* * Displays error codes and numbers from the SQLCA and exits with* an ERREXIT status. */voiderror_handler(void) fprintf(stderr, "n* SQLC

45、ODE=(%ld)", sqlca.sqlcode); if (sqlca.sqlerrm.sqlerrml) fprintf(stderr, "n* ASE Error "); fprintf(stderr, "n* %s", sqlca.sqlerrm.sqlerrmc); fprintf(stderr, "nn"); exit(-1); /* void warning_handler()* * Displays warning messages.*/voidwarning_handler(void) if (sqlca

46、.sqlwarn1 = 'W') fprintf(stderr, "n* Data truncated.n"); if (sqlca.sqlwarn3 = 'W') fprintf(stderr, "n* Insufficient host variables to store results.n"); return;代碼 Log4j配置 <!- 日志jar -> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </dependency>導(dǎo)入這個(gè)包,會(huì)引入下面兩個(gè)jar<!-spring 的基本jar包 ->

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論