首先要理解基本的原理,2台电脑间实现TCP通讯,首先要建立起连接,在这里要提到服务器端与客户端,两个的区别通俗讲就是主动与被动的关系,两个人对话,肯定是先有人先发起会话,要不然谁都不讲,谈什么话题,呵呵!一样,TCPIP下建立连接首先要有一个服务器,它是被动的,它只能等待别人跟它建立连接,自己不会去主动连接,那客户端如何去连接它呢,这里提到2个东西,IP地址和端口号,通俗来讲就是你去拜访某人,知道了他的地址是一号大街2号楼,这个是IP地址,那么1号楼这么多门牌号怎么区分,嗯!门牌号就是端口(这里提到一点,我们访问网页的时候也是IP地址和端口号,IE默认的端口号是80),一个服务器可以接受多个客户端的连接,但是一个客户端只能连接一台服务器,在连接后,服务器自动划分内存区域以分配各个客户端的通讯,那么,那么多的客户端服务器如何区分,你可能会说,根据IP么,不是很完整,很简单的例子,你一台计算机开3个QQ,服务器怎么区分?所以准确的说是IP和端口号,但是客户端的端口号不是由你自己定的,是由计算机自动分配的,要不然就出现端口冲突了,说的这么多,看下面的这张图就简单明了了。
在上面这张图中,你可以理解为程序A和程序B是2个SOCKET程序,服务器端程序A设置端口为81,已接遭到3个客户端的连接,计算机C开了2个程序,分别连接到E和D,而他的端口是计算机自动分配的,连接到E的端口为789,连接到D的为790。
了解了TCPIP通讯的基本结构后,接下来讲解建立的流程,首先声明一下我用的开发环境是VisualStudio2008版的,语言C#,组件System.Net.Sockets,流程的建立包括服务器端的建立和客户端的建立,如图所示:二、实现:1.客户端:第一步,要创建一个客户端对象TcpClient(命名空间在System.Net.Sockets),接着,调用对象下的方法BeginConnect进行尝试连接,入口参数有4个,address(目标IP地址),port(目标端口号),requestCallback(连接成功后的返调函数),state(传递参数,是一个对象,随便什么都行,我建议是将TcpClient自己传递过去),调用完毕这个函数,系统将进行尝试连接服务器。
第二步,在第一步讲过一个入口参数requestCallback(连接成功后的返调函数),比如我们定义一个函数voidConnected(IAsyncResultresult),在连接服务器成功后,系统会调用此函数,在函数里,我们要获取到系统分配的数据流传输对象(NetworkStream),这个对象是用来处理客户端与服务器端数据传输的,此对象由TcpClient获得,在第一步讲过入口参数state,如果我们传递了TcpClient进去,那么,在函数里我们可以根据入口参数state获得,将其进行强制转换TcpClienttcpclt=(TcpClient)result.AsyncState,接着获取数据流传输对象NetworkStreamns=tcpclt.GetStream(),此对象我建议弄成全局变量,以便于其他函数调用,接着我们将挂起数据接收等待,调用ns下的方法BeginRead,入口参数有5个,buff(数据缓冲),offset(缓冲起始序号),size(缓冲长度),callback(接收到数据后的返调函数),state(传递参数,一样,随便什么都可以,建议将buff传递过去),调用完毕函数后,就可以进行数据接收等待了,在这里因为已经创建了NetworkStream对象,所以也可以进行向服务器发送数据的操作了,调用ns下的方法Write就可以向服务器发送数据了,入口参数3个,buff(数据缓冲),offset(缓冲起始序号),size(缓冲长度)。
第三步,在第二步讲过调用了BeginRead函数时的一个入口参数callback(接收到数据后的返调函数),比如我们定义了一个函数voidDataRec(IAsyncResultresult),在服务器向客户端发送数据后,系统会调用此函数,在函数里我们要获得数据流(byte数组),在上一步讲解BeginRead函数的时候还有一个入口参数state,如果我们传递了buff进去,那么,在这里我们要强制转换成byte[]类型byte[]data=(byte[])result.AsyncState,转换完毕后,我们还要获取缓冲区的大小intlength=ns.EndRead(result),ns为上一步创建的NetworkStream全局对象,接着我们就可以对数据进行处理了,如果获取的length为0表示客户端已经断开连接。
具体实现代码,在这里我建立了一个名称为Test的类:2.服务
2023/2/17 5:19:13 297KB TCP/IP C++ 协议
1
halcon外触发get_framegrabber_callback注册回调函数方式,c#代码
2016/9/26 23:54:02 17KB halcon framegrabber callback c#
1
移动应用平台appcanmas开发AppCan后端服务集成系统MAS 3MAS–MEAPAdapterSystem 3为什么使用MAS 5MAS系统构成 6MAS系统目录结构分析 7MAS配置文件解析 8service.xml 8interface.xml 11application.xml 12policy_[PolicyName].xml 12Initialize.js 13MAS适配器的实现 13MAS适配器运转环境 13MAS适配器 13Param对象 14Robot对象 14Request对象 16Response对象 16IF对象 16MAS适配器API 16MEAP.AJAX 17函数Runner(Option,Callback,Robot,Pretreat) 18MEAP.MYSQL 19函数BuildStatement(sql,params,options,cb) 21函数Runner(Option,Callback,Robot) 21函数buildPool(Option) 21MYSQLPOOL对象 22MEAP.SOAP 22函数Runner(Option,Callback,Robot) 23函数Server(Option,Callback) 24MEAP.SFS 25函数Runner(Option,Callback,Robot) 25MEAP.PARSER 26函数Runner(Type,SrcData,Callback,XSLT) 26函数MakeXSL(XSLTString) 27MEAP.MSG 27MEAP.LDAP 29MAS默认错误码 30
2019/11/11 4:21:47 261KB appcan MAS开发
1
史上最全的整合第三方登录的工具,目前已支持Github、Gitee、微博、钉钉、百度、Coding、腾讯云开发者平台、OSChina、支付宝、QQ、微信、淘宝、Google、Facebook、抖音、领英、小米、微软和今日头条等第三方平台的授权登录。
Login,soeasy!JustAuth,如你所见,它仅仅是一个第三方授权登录的工具类库,它可以让我们脱离繁琐的第三方登录SDK,让登录变得Soeasy!项目开源地址:gitee?|?github特点废话不多说,就俩字:全:已集成十多家第三方平台(国内外常用的基本都已包含),后续依然还有扩展计划!简:API就是奔着最简单去设计的(见后面快速开始),尽量让您用起来没有障碍感!快速开始引入依赖????me.zhyd.oauth????JustAuth????1.8.0调用api//?创建授权requestAuthRequest?authRequest?=?new?AuthGiteeRequest(AuthConfig.builder()????????.clientId("clientId")????????.clientSecret("clientSecret")????????.redirectUri("redirectUri")????????.state("state")????????.build());//?生成授权页面authRequest.authorize();//?授权登录后会返回code(auth_code(仅限支付宝))、state,1.8.0版本后,可以用AuthCallback类作为回调接口的参数authRequest.login(callback);注:1.8.0版本后,增加了state参数校验,用于防止CSRF。
强烈建议,保证单次流程内state的唯一性,且每个state只可用一次。
配套Demo:JustAuth-demo具体的例子可以参考:实现Gitee授权登录实现Github授权登录API列表平台API类?SDKAuthGiteeRequest参考文档AuthGithubRequest参考文档AuthWeiboRequest参考文档AuthDingTalkRequest参考文档AuthBaiduRequest参考文档AuthCodingRequest参考文档AuthTencentCloudRequest参考文档AuthOschinaRequest参考文档AuthAlipayRequest参考文档AuthQqRequest参考文档AuthWeChatRequest参考文档AuthTaobaoRequest参考文档AuthGoogleRequest参考文档AuthFacebookRequest参考文档AuthDouyinRequest参考文档AuthLinkedinRequest参考文档AuthMicrosoftRequest参考文档AuthMiRequest参考文档AuthToutiaoRequest参考文档AuthCsdnRequest无请知悉:经咨询CSDN官方客服得知,CSDN的授权开放平台已经下线。
如果以前申请过的应用,可以继续使用,但是不再支持申请新的应用。
so,本项目中的CSDN登录只能针对少部分用户使用了后续开发计划参考:[开发计划]待扩展的第三方平台另外,期待您和我一起完善这个项目!贡献代码fork本项目到自己的repo把fork过去的项目也就是你仓库中的项目clone到你的本地修改代码commit后push到自己的库发起PR(pullrequest)请求等待作者合并致谢在项目立项初期,也对当前开源圈的一些相同类型的项目作过调研,同时本项目也参考过这些项目,再次感激开源圈内的朋友。
YurunOAuthLogin:PHP第三方登录授权SDK阿里妈妈MUX倾力打造的矢量图标库-iconfont:本文档中的图标大部分取自该平台
2017/1/25 2:37:52 159KB 开源项目
1
Application("fastlogin_useqq_appid")="你的APPID"Application("fastlogin_useqq_appkey")="你的APPkey"Application("QQ_CALLBACK_URL")="你的回调地址"改这3个变量都行了,代码是公开的大家可以参考一下
2015/8/16 17:18:48 42KB QQ互联 支付宝互联 QQ登录网站
1
//压缩前数据TextField_get.text=@service=\alipay.fund.stdtrustee.order.create.pay\&partner=\2088401309894080\&_input_charset=\utf-8\¬ify_url=\https://wwhongbao.taobao.com/callback/alipay/notifyPaySuccess.do\&out_order_no=\23743001583595538_8daa2b6a58da7263bd4140857b561a19_2\&out_request_n
2016/2/6 22:47:55 35KB 支付宝 方法 调用
1
废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到).1.load(url,[data],[callback]):载入近程HTML文件代码并插入至DOM中。
url?(String):请求的HTML页的URL地址。
data?(Map):(可选参数)发送至服务器的key/value数据。
callback?(Callback):(可选参数)请求完成时(不需要是success的)的回调函数。
这个方法默
2016/4/16 3:30:06 138KB ajax callback html代码
1
category_and_d3运用分类算法预测高血压,并运用d3对结果进行基本可视化####文件夹结构:3天包含用于创建d3条形图的.html文件和.csv数据文件。
*precision.html带有CSS和javascript的html文件。
运用“d3.js”(带有工具提示)库来生成图形,pure_accuracy.csv数据集,该数据集会由precision.html*callback.html带有CSS和javascript的html文件运用。
运用“d3.js”(带有工具提示)库来生成图*pivot_recall.csv数据集,该图*由css和javascript运用的callback.html*feature_importance.htmlhtml文件运用。
运用d3.js库,还运用过渡来生成图形sql包含.sql脚本以生成分类模型中运用的
2015/3/23 3:05:23 11.73MB HTML
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡