收藏 分销(赏)

Boostasio异步TCP通讯及tcp粘包解包解决方案.doc

上传人:a199****6536 文档编号:3859882 上传时间:2024-07-22 格式:DOC 页数:44 大小:66.54KB 下载积分:12 金币
下载 相关 举报
Boostasio异步TCP通讯及tcp粘包解包解决方案.doc_第1页
第1页 / 共44页
Boostasio异步TCP通讯及tcp粘包解包解决方案.doc_第2页
第2页 / 共44页


点击查看更多>>
资源描述
Boost asio异步TCP通讯及tcp粘包解包解决方案 Sphinx调用命令列表 [Shell/批解决],Spring连接MySQL、Oracle和SQL Server的数 sql防注入的登录注册 [SQL],Struts 2剔除Ongl表达式危险的数据类型。 SVG绘制圆弧 svn 小冲突解决 笔记 tableview 全面自定制 int main() { namespace ip = boost::asio::ip; boost::asio::io_service io_service; // Server binds to any address and any port. ip::udp::socket socket(io_service, ip::udp::endpoint(ip::udp::v4(), 0)); socket.set_option(boost::asio::socket_base::broadcast(true)); // Broadcast will go to port 8888. ip::udp::endpoint broadcast_endpoint(ip::address_v4::broadcast(), 8888); // Broadcast data. //boost::array<char, 4> buffer; char* buf = "测试代码"; socket.send_to(boost::asio::buffer(buf,strlen(buf)+1), broadcast_endpoint); } //jQuery地区三级联动选择输入 //jquery实现网站列表切换效果(2种方法) //js动画完美框架 [文献] skiplist.cpp ~ 5KB /* skip list */ #include <stdio.h> #include <stdlib.h> /* implementation dependent declarations */ typedef enum { STATUS_OK, STATUS_MEM_EXHAUSTED, STATUS_DUPLICATE_KEY, STATUS_KEY_NOT_FOUND } statusEnum; // js实现鼠标hover时tab自动切换 typedef int keyType; /* type of key */ /* user data stored in tree */ typedef struct { int stuff; /* optional related data */ } recType; #define compLT(a,b) (a < b) #define compEQ(a,b) (a == b) /* levels range from (0 .. MAXLEVEL) */ #define MAXLEVEL 15 typedef struct nodeTag { keyType key; /* key used for searching */ recType rec; /* user data */ struct nodeTag *forward[1]; /* skip list forward pointer */ } nodeType; [代码] [Google Go]代码 package main import ( "io/ioutil" "net/http" "net/" "fmt" "encoding/json" ) //---------------------------------- // 黄金数据调用示例代码 - 聚合数据 // 在线接口文档:www/docs/29 //---------------------------------- const APPKEY = "*******************" //您申请的APPKEY func main(){ //1.上海黄金交易所 Request1() //2.上海期货交易所 Request2() //3.银行账户黄金 Request3() } //1.上海黄金交易所 func Request1(){ //请求地址 juhe :="web:8080/finance/gold/shgold" //初始化参数 param:=.Values{} //配置请求参数,方法内部已解决encode问题,中文参数可以直接传参 param.Set("key",APPKEY) //APP Key param.Set("v","") //JSON格式版本(0或1)默认为0 //发送请求 data,err:=Get(juhe,param) if err!=nil{ fmt.Errorf("请求失败,错误信息:\r\n%v",err) }else{ var netReturn map[string]interface{} json.Unmarshal(data,&netReturn) if netReturn["error_code"].(float64)==0{ fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"]) } } } //2.上海期货交易所 func Request2(){ //请求地址 juhe :="web:8080/finance/gold/shfuture" //初始化参数 param:=.Values{} //配置请求参数,方法内部已解决encode问题,中文参数可以直接传参 param.Set("key",APPKEY) //APP Key param.Set("v","") //JSON格式版本(0或1)默认为0 //发送请求 data,err:=Get(juhe,param) if err!=nil{ fmt.Errorf("请求失败,错误信息:\r\n%v",err) }else{ var netReturn map[string]interface{} json.Unmarshal(data,&netReturn) if netReturn["error_code"].(float64)==0{ fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"]) } } } //3.银行账户黄金 func Request3(){ //请求地址 juhe :="web:8080/finance/gold/bankgold" //初始化参数 param:=.Values{} //配置请求参数,方法内部已解决encode问题,中文参数可以直接传参 param.Set("key",APPKEY) //APP Key //发送请求 data,err:=Get(juhe,param) if err!=nil{ fmt.Errorf("请求失败,错误信息:\r\n%v",err) }else{ var netReturn map[string]interface{} json.Unmarshal(data,&netReturn) if netReturn["error_code"].(float64)==0{ fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"]) } } } // get 网络请求 func Get(api string,params .Values)(rs[]byte ,err error){ var *. ,err=.Parse(api) if err!=nil{ fmt.Printf("解析错误:\r\n%v",err) return nil,err } //假如参数中有中文参数,这个方法会进行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 网络请求 ,params 是.Values类型 func Post(api string, params .Values)(rs[]byte,err error){ resp,err:=http.PostForm(api, params) if err!=nil{ return nil ,err } defer resp.Body.Close() return ioutil.ReadAll(resp.Body) } 代码描述:基于GO的黄金数据接口调用代码实例 关联数据:黄金数据 [代码] [C#]代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using Xfrog.Net; using System.Diagnostics; using System.Web; //---------------------------------- // 黄金数据调用示例代码 - 聚合数据 // 在线接口文档:www/docs/29 // 代码中JsonObject类下载地址:/download/gcm5/7458439 //---------------------------------- namespace ConsoleAPI { class Program { static void Main(string[] args) { string appkey = "*******************"; //配置您申请的appkey //1.上海黄金交易所 string 1 = "web:8080/finance/gold/shgold"; var parameters1 = new Dictionary<string, string>(); parameters1.Add("key", appkey);//你申请的key parameters1.Add("v" , ""); //JSON格式版本(0或1)默认为0 string result1 = sendPost(1, parameters1, "get"); JsonObject newObj1 = new JsonObject(result1); String errorCode1 = 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.上海期货交易所 string 2 = "web:8080/finance/gold/shfuture"; var parameters2 = new Dictionary<string, string>(); parameters2.Add("key", appkey);//你申请的key parameters2.Add("v" , ""); //JSON格式版本(0或1)默认为0 string result2 = sendPost(2, parameters2, "get"); JsonObject newObj2 = new JsonObject(result2); String errorCode2 = 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.银行账户黄金 string 3 = "web:8080/finance/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 (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="">请求</param> /// <param name="parameters">请求参数</param> /// <param name="method">请求方法</param> /// <returns>响应内容</returns> static string sendPost(string , IDictionary<string, string> parameters, string method) { if (method.ToLower() == "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 = "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(); Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet); return GetResponseAsString(rsp, encoding); } catch (Exception ex) { return ex.Message; } finally { if (reqStream != null) reqStream.Close(); if (rsp != null) rsp.Close(); } } else { //创建请求 HttpWebRequest request = (HttpWebRequest)WebRequest.Create( + "?" + BuildQuery(parameters, "utf8")); //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 StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); //返回内容 string retString = myStreamReader.ReadToEnd(); return retString; } } /// <summary> /// 组装普通文本请求参数。 /// </summary> /// <param name="parameters">Key-Value形式请求参数字典</param> /// <returns>编码后的请求数据</returns> 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; string value = 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"))); } else if (encode == "utf8") { postData.Append(HttpUtility.Encode(value, Encoding.UTF8)); } else { postData.Append(value); } hasParam = true; } } return postData.ToString(); } /// <summary> /// 把响应流转换为文本。 /// </summary> /// <param name="rsp">响应流对象</param> /// <param name="encoding">编码方式</param> /// <returns>响应文本</returns> static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding) { System.IO.Stream stream = null; StreamReader reader = null; try { // 以字符流的方式读取HTTP响应 stream = rsp.GetResponseStream(); 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远程传输工具 */ public function post_c($,$body,$header,$type='POST'){ $ch = c_init(); c_setopt($ch,COPT_,$); c_setopt($ch,COPT_HEADER,0);//0只要正文 c_setopt($ch,COPT_TIMEOUT,5);//设立超时时间 c_setopt($ch,COPT_CONNECTTIMEOUT,5); //将c_exec()获取的信息以文献流的形式返回,而不是直接输出。 c_setopt($ch,COPT_RETURNTRANSFER,1); //增长header头信息 // array_push($header,'Accept:application/json'); // array_push($header,'Content-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); } //设立上传文献相关 c_setopt($ch,COPT_FOLLOWLOCATION,true); c_setopt($ch,COPT_MAXREDIRS,3);//递归 c_setopt($ch,COPT_SSL_VERIFYPEER,false);// 对认证证书来源的检查 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'); break; case 'DELETE': c_setopt($ch,COPT_CUSTOMREQUEST,'DELETE'); break; } //上传文献相关设立 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)');// 模拟用户使用的浏览器 if(c_errno($ch)){ return c_error($ch); } $content = c_exec($ch); c_close($ch);//关闭c资源,并且释放系统资源 $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/sybase/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> /*建立通讯区域*/ EXEC SQL INCLUDE SQLCA; /* ** These tokens must be declared in a declare section ** because they are used in declare sections below. */ EXEC SQL BEGIN DECLARE SECTION; #define TYPESIZE 13 #define TIDSIZE 6 EXEC SQL END DECLARE SECTION; #define EOLN '\0' /* ** Forward declarations of the error a
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服