百度云不用客户端下载 用不用 bind 的区别

您所在的位置: &
ASP.NET中Bind和Eval的区别:两种绑定
ASP.NET中Bind和Eval的区别:两种绑定
本文详细说明了asp.net中Bind和Eval两者之间的区别。eval()方法在运行时使用反射执行后期绑定计算,因此与标准的asp.net数据绑定方法bind相比,会导致性能明显下降。
eval()方法在运行时使用反射执行后期绑定计算,因此与标准的asp.net数据绑定方法bind相比,会导致性能明显下降。它一般用在绑定时需要格式化字符串的情况下。多数情况尽量少用此方法&&
Eval 方法是静态(只读)方法,该方法采用数据字段的值作为参数并将其作为字符串返回。Bind 方法支持读/写功能,可以检索数据绑定控件的值并将任何更改提交回数据库。&&
asp.net中的Bind和Eval:使用 Eval 方法
Eval 方法可计算数据绑定控件(如 GridView、DetailsView 和 FormView 控件)的模板中的后期绑定数据表达式。在运行时,Eval 方法调用 DataBinder 对象的 Eval 方法,同时引用命名容器的当前数据项。命名容器通常是包含完整记录的数据绑定控件的最小组成部分,如 GridView 控件中的一行。因此,只能对数据绑定控件的模板内的绑定使用 Eval 方法。&&
Eval 方法以数据字段的名称作为参数,从数据源的当前记录返回一个包含该字段值的字符串。可以提供第二个参数来指定返回字符串的格式,该参数为可选参数。字符串格式参数使用为 String 类的 Format 方法定义的语法。&&&
asp.net中的Bind和Eval:使用 Bind 方法
Bind 方法与 Eval 方法有一些相似之处,但也存在很大的差异。虽然可以像使用 Eval 方法一样使用 Bind 方法来检索数据绑定字段的值,但当数据可以被修改时,还是要使用 Bind 方法。&&&
在 asp.net 中,数据绑定控件(如 GridView、DetailsView 和 FormView 控件)可自动使用数据源控件的更新、删除和插入操作。例如,如果已为数据源控件定义了 SQL Select、Insert、Delete 和 Update 语句,则通过使用 GridView、DetailsView 或 FormView 控件模板中的 Bind 方法,就可以使控件从模板中的子控件中提取值,并将这些值传递给数据源控件。然后数据源控件将执行适当的数据库命令。出于这个原因,在数据绑定控件的 EditItemTemplate 或 InsertItemTemplate 中要使用 Bind 函数。&&&
Bind 方法通常与输入控件一起使用,例如由编辑模式中的 GridView 行所呈现的 TextBox 控件。当数据绑定控件将这些输入控件作为自身呈现的一部分创建时,该方法便可提取输入值。&&&&
Bind 方法采用数据字段的名称作为参数,从而与绑定属性关联,如下面的示例所示:&& &&EditItemTemplate&& &&&&&&table&& &&&&&&tr&& &&&&&&td&align=right&& &&&&&&b&Employee&ID:&&/b&& &&&&&&/td&& &&&&&&td&& &&&&&&%#&Eval("EmployeeID")&%&& &&&&&&/td&& &&&&&&/tr&& &&&&&&tr&& &&&&&&td&align=right&& &&&&&&b&First&Name:&&/b&& &&&&&&/td&& &&&&&&td&& &&&&&&asp:TextBox&ID="EditFirstNameTextBox"&RunAt="Server"& &&&&Text='&&%#&Bind("FirstName")&%&'&/&& &&&&&&/td&& &&&&&&/tr&& &&&&&&tr&& &&&&&&td&align=right&& &&&&&&b&Last&Name:&&/b&& &&&&&&/td&& &&&&&&td&& &&&&&&asp:TextBox&ID="EditLastNameTextBox"&RunAt="Server"& &&&&Text='&&%#&Bind("LastName")&%&'&/&& &&&&&&/td&& &&&&&&/tr&& &&&&&&tr&& &&&&&&td&colspan="2"&& &&&&&&asp:LinkButton&ID="UpdateButton"&RunAt="server"& &&&&Text="Update"&CommandName="Update"&/&& &&&& &&&&&&asp:LinkButton&ID="CancelUpdateButton"&RunAt="server"& &&&&Text="Cancel"&CommandName="Cancel"&/&& &&&&&&/td&& &&&&&&/tr&& &&&&&&/table&& &&&&&&/EditItemTemplate&& &
单击行的 Update 按钮时,使用 Bind 语法绑定的每个控件属性值都会被提取出来,并传递给数据源控件以执行更新操作。
asp.net中的Bind和Eval:使用 DataBinder.Eval
asp.net 提供了一个名为 DataBinder.Eval 的静态方法,该方法计算后期绑定的数据绑定表达式,并将结果格式化为字符串(可选)。利用此方法,可以避免许多在将值强制为所需数据类型时必须执行的显式强制转换操作。&&&
例如,在下面的代码片段中,一个整数显示为货币字符串。使用标准的 asp.net 数据绑定语法,必须首先强制转换数据行的类型以便检索数据字段 IntegerValue。然后,这将作为参数传递到 String.Format 方法:&&& &&%#&String.Format("{0:c}",&((DataRowView)Container.DataItem)["IntegerValue"])&%&&&&
将此语法与 DataBinder.Eval 的语法进行比较,后者只有三个参数:数据项的命名容器、数据字段名称和格式字符串。在模板化列表中(如 DataList 类、DataGrid 类或 Repeater 类),命名容器始终是 Container.DataItem。&&&&&&%#&DataBinder.Eval(Container.DataItem,&"IntegerValue",&"{0:c}")&%&&&
格式字符串参数是可选的。如果它被忽略,DataBinder.Eval 将返回类型对象的值,如下面的示例所示:&&&&&&&&%#&(bool)DataBinder.Eval(Container.DataItem,&"BoolValue")&%&&&&&&
当对模板化列表中的控件进行数据绑定时,DataBinder.Eval 特别有用,因为数据行和数据字段通常都必须强制转换。
以上就是asp.net中Bind和Eval的区别,希望在asp.net的应用中对大家有所帮助。
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
AngularJS是很多Web开发人员在打造单页面应用程序时的首选创建方
所以姑娘,让我们做一枚花见花开的程序媛。
讲师: 15人学习过讲师: 36人学习过讲师: 15人学习过
我们都知道在20世纪90年代是多元文化和多媒体时代,而
Java 8版本最大的改进就是Lambda表达式,其目的是使Ja
美国旧金山时间3月31日,在红木城Oracle公司总部,Ora
本书结合JSP和Servlet的最新规范,从基本的语法和规范入手,以经验为后盾,以实用为目标,以实例为导向,以实践为指导,深入浅出
51CTO旗下网站相关文章推荐:
客户端socket bind
无连接的socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。
bind()函数在成功被调用时返回0;出现错误时返回&-1&并将errno置为相应的错误号。需要注意的是,在调用bind函数时一般不要将端口号置为小于1024的值,因为1到1024是保留端口号,你可以选择大于1024中的任何一个没有被占用的端口号。 有...
阅读(0) 回复(0)
其他文章推荐
转载: /xiaowuyi/archive//2625509.html
参考:/python/22.html
服务器和客户端程序很类似,上节学习了客户端程序,这一节将仔细学习一下利用socket建立TCP服务器和UDP服务器。
1、TCP连接的建立方法
客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较。
Python/Ruby
阅读(240) 回复(0)
bind乃现今使用最为广泛的DNS服务器软件
bind服务的名称谓之“named”
bind配置文件保存在两个主要位置
▲ bind服务主配置文件:/etc/named.conf
▲ zone文件:
/var/named/
chroot是通过将相关文件封装在一个伪根目录内,以达到安全防卫的目的,一旦该程序被攻破,
将只能访问伪根目录内的内容...
网络与安全
阅读(0) 回复(0)
如果你的服务器有多个网卡(每个网卡上有不同的IP地址),而你的服务(不管是在udp端口上侦听,还是在tcp端口上侦听),出于某种原因:可能是你的服务器操作系统可能随时增减IP地址,也有可能是为了省去确定服务器上有什么网络端口(网卡)的麻烦 —— 可以要在调用bind()的时候,告诉操作系统:“我需要在 yyyy 端口上侦听,所以发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都是我处理的。”这时候,服务器...
阅读(0) 回复(0)
CocoaAsyncsocket支持tcp和udp。其中:
Asyncsocket类是支持TCP的
AsyncUdpsocket是支持UDP的
Asyncsocket是封装了CFsocket和CFSteam的TCP/IP socket网络库。它提供了异步操作,本地cocoa类的基于delegate的完整支持。主要有以下特性:
队列的非阻塞的读和写,而且可选超时。你可以调用它读取和写入,它会当完成后告知你自动的socket接收。如果你调用它接收连接,它将为每个连接启动新的实例,当然,也可以...
阅读(570) 回复(0)
在水木上看到一个关于在客户端调用bind的讨论,http://www.newsmth.net/bbstcon.php?board=NetPRG&gid=40783
如果不调用bind,则客户端在向外发包时,会由系统自己决定使用的接口的源端口,而调用bind则可以指定相应的参数。另外有个哥们提到“果是udp,使用bind以后,可以不使用sendto/recvform函数,而直接用write/read函数了,少去了写一个参数。”,这应该是调用connect后的效果。关于UDP中客户端调用connect的好处,还有一个...
阅读(60) 回复(0)
文章来源:/nightwatcher/archive//2096717.html
  在最开始接触bind的时候,只是在写基于tcp的server端的时候,知道在listen之前需要先bind一下,用来确保socket能在某个固定的端口监听。而bind的时候,函数参数中的端口填自己将要绑定的端口就行;而IP地址,需要填本机的IP,但是也可以用一个宏INADDR_ANY代替,用这个宏就可以不用查找本机的IP,它就可以代替本机的IP。当时只觉得这个INADDR_...
网络与安全
阅读(90) 回复(0)
/nightwatcher/archive//2096717.html
在最开始接触bind的时候,只是在写基于tcp的server端的时候,知道在listen之前需要先bind一下,用来确保socket能在某个固定的端口监听。而bind的时候,函数参数中的端口填自己将要绑定的端口就行;而IP地址,需要填本机的IP,但是也可以用一个宏INADDR_ANY代替,用这个宏就可以不用查找本机的IP,它就可以代替本机的IP。当时只觉得这个INADDR_ANY比较神奇,...
阅读(0) 回复(0)
一个简单的HTTP协议客户端源代码
#include&stdio.h&
#include&winsock2.h&
#include&windows.h&
typedef struct{
char line[256];
char head[256];
char body[256];
void main(){
struct sockaddr_
char sndBuf[1024], rcvBuf[1024]; ...
阅读(2370) 回复(0)
bind函数bind函数用于将套接字与指定端口相连,其具体信息如表13.4所示。表13.4
bind函数头文件&sys/types.h&&sys/socket.h&函数形式int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);返回值成功失败是否设置errno0-1是说明:当调用socket函数创建套接字后,该套接字并没有与本机地址和端口等信息相连,bind函数将完成这些工作。bind函数中的sockfd参数为调用socket函数后返回的文件描述符...
阅读(0) 回复(0)
bind函数bind函数用于将套接字与指定端口相连,其具体信息如表13.4所示。表13.4
bind函数头文件&sys/types.h&&sys/socket.h&函数形式int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);返回值成功失败是否设置errno0-1是说明:当调用socket函数创建套接字后,该套接字并没有与本机地址和端口等信息相连,bind函数将完成这些工作。bind函数中的sockfd参数为调用socket函数后返回的文件描述符...
阅读(0) 回复(0)
盛拓传媒:
北京皓辰网域网络信息技术有限公司. 版权所有
北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证:编号(京)字第1149号
ITPUB推荐文章解答你所有技术难题jQuery事件:bind、delegate、on的区别
您当前位置: &
[ 所属分类
作者 红领巾 ]
最近在AngularJS的开发中,遇到一个神奇的事情:我们用到livebox来预览评论列表中的图片, 然而评论列表是由Angular Resource动态载入的。不可思议的是,点击这些动态载入的图片仍然会触发lightbox的图片预览。 难道lightbox使用先进的MutationObserver技术监听了DOM的变化?观察lightbox源码才发现,原来只是jQuery的.on()方法:$('body').on('click', 'a[rel^=lightbox], ...', function(event){});本文便来详解各种jQuery事件绑定方法:on,bind,delegate,live,unbind,trigger。 同时总结一下常用的jQuery事件技术:如何阻止事件冒泡、阻止浏览器默认行为、解绑事件处理函数、自定义事件。什么是 jQuery 事件jQuery事件是DOM事件的封装,同时支持自定义的扩展。在程序设计中,事件和代理有着相似的作用: 它们提供了一种机制,使得行为的实现方式和调用时机可以分离。不谈jQuery,DOM本身就提供了一系列的事件,例如click,keyup,submit。 通常在JavaScript中,我们会定义一系列的处理函数,也就是行为。 浏览器这些行为的调用时机,而处理函数知道这些行为的实现方式。Javascript事件就是这样一种机制, 使得行为的实现方式和调用时机可以动态地绑定。jQuery事件封装了javascript事件,例如:.keyup()函数便是JavaScript的onkeyup的封装: .keyup(): Bind an event handler to the keyup JavaScript event, or trigger that event on an element.除了封装大多数的javascript事件,jQuery提供了统一的事件绑定和触发机制:
绑定事件:bind、on、live、delegate、keyup();触发事件:trigger('keyup')、keyup();解绑事件:unbind、off、die、undelegate。事件绑定:bind使用javascript绑定一个事件很简单,只需要在HTML中设置onxxx属性, 并且在javascript中定义相关的处理函数便可以完成。&script&function func(){ console.log('clicked!');}&/script&上述是基本的javascript事件处理方式,而jQuery提供了更加方便的方式:.bind()函数。 .bind():Attach a handler to an event for the elements.&script&$('#foo').click(function(){ console.log('clicked!');});&/script&.click()等效于.bind('click', )。另外还可以通过unbind来解绑事件:$('#foo').unbind('click'); 如果unbind参数为空,则解绑匹配元素的所有事件处理函数。 在我的理解中,我们还是不要off,unbind,die吧。即使不谈效率,它们也使得软件更难理解了。 如果你感觉有需要,下面的.on()应该会满足你~.bind将会给所有匹配的元素都绑定一次事件,当元素很多时性能会变差。 而且后来动态新增的元素不会被绑定。事件冒泡与默认行为在DOM中默认情况下,事件是会冒泡的,即同样的事件会沿着DOM树逐级触发。 有时这是我们不希望的行为,可以在事件处理函数中阻止它。// 事件处理函数的第一个参数是一个事件对象$('#foo').click(function(event){ event.stopPropagation(); // do sth.});浏览器对用户事件的默认行为是另一个需要考虑的事情,尤其是标签的click事件。 当用户点击标签时,首先调用所有的事件处理函数,然后执行默认行为:页面跳转或者定位。 同样地,我们可以阻止它: $('a').click(function(event){ event.preventDefault(); // do sth.});在实践中,我们常常让事件处理函数return false来阻止冒泡和默认行为, 可以认为return false做了三件事情:
stopPropagation();preventDefault();
立即结束当前函数并返回。 $('a').click(function(event){ // do sth.});自定义事件jQuery事件是基于DOM事件的,但jQuery提供了更加普遍的事件机制。 这使得我们可以方便地自定义事件,只需要给一个尚不存在的事件名即可:&script&$('#foo').bind('fucked', function(){ console.log(I'm fucked.);});$('#foo').trigger('fucked');&/script& 上述代码中,首先定义了一个fucked的事件并绑定了处理函数,然后使用trigger来手动触发该事件。 当然,把fucked关联到其他的事件可以让这个例子更加真实:var he = 'man';$('#foo').click(function(){ if(he === 'man') $(this).trigger('fucked');});Delegate.delegate是另一种绑定事件的方式。它将事件处理函数绑定在指定的根元素上, 由于事件会冒泡,它用来处理指定的子元素上的事件。 .delegate():Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. Alice Bob &script&$('#root').delegate('a', 'click', function(){ console.log('clicked');});&/script&它的使用方式比bind稍显复杂,但它的功能非常强大:
自动绑定动态添加的元素。因为事件处理函数绑定在#root上,新加的子元素事件也会冒泡到#root。性能好于.bind()。只绑定一个事件处理函数,绑定速度相当快。 如果你在使用AngularJS等动态操作DOM的工具,那么.delegate()将会非常实用,它能对新增的DOM元素自动绑定。On事实上,.on()才是jQuery事件的提供者。其他的事件绑定方法都是通过.on()来实现的,请看jQuery1.8.2的源码:bind: function( types, data, fn ) { return this.on( types, null, data, fn );},unbind: function( types, fn ) { return this.off( types, null, fn );},live: function( types, data, fn ) { jQuery( this.context ).on( types, this.selector, data, fn );},die: function( types, fn ) { jQuery( this.context ).off( types, this.selector || **, fn );},delegate: function( selector, types, data, fn ) { return this.on( types, selector, data, fn );},undelegate: function( selector, types, fn ) { return arguments.length === 1 ? this.off( selector, ** ) : this.off( types, selector || **, fn );},既然.on是最通用的jQuery事件机制,那么上述的所有例子都可以用.on()来实现:// bind $( #foo ).bind( click, function( e ) {} );$( #foo ).on( click, function( e ) {} ); // delegate $( #root ).delegate( a, click, function( e ) {} );$( #root ).on( click, a, function( e ) {} ); 我们看到上面还有一个.live()方法,它与delegate是类似的, 不过它强制指定了root是document(即this.context),因而性能略差。
本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
船到江心难补漏,马到悬崖难回头!是非皆因开口多,祸事皆因强出头!万花丛中过,片叶不沾身
手机客户端
,专注代码审计及安全周边编程,转载请注明出处:http://www.codesec.net
转载文章如有侵权,请邮件 admin[at]codesec.net简单分析一下socket中的bind - 守夜者 - 博客园
灵感来自于积累
  在最开始接触bind的时候,只是在写基于tcp的server端的时候,知道在listen之前需要先bind一下,用来确保socket能在某个固定的端口监听。而bind的时候,函数参数中的端口填自己将要绑定的端口就行;而IP地址,需要填本机的IP,但是也可以用一个宏INADDR_ANY代替,用这个宏就可以不用查找本机的IP,它就可以代替本机的IP。当时只觉得这个INADDR_ANY比较神奇,但是由于当时觉得用起来很方便,也没出啥问题,也就没有再深究。  但是最近在做RTSP服务器的时候,有种特殊的应用,导致我不得不对bind这个函数仔细地看一下。  我们知道无论是UDP还是TCP,socket都会与一个本地的IP和端口想对应,我们往往把这个IP和端口称之为socket的源地址和源端口。当我们作为客户端利用socket去发送数据时,很少会去考虑这个源地址和源端口到底是什么,我们更关心的是它的目的地址和端口。我们往往只有在监听的时候,才去考虑这个源端口,所以我们在监听的时候会去用bind。当我们bind之后,内核就会将这个socket的源端口锁定到我们设定的端口上。但是这就有一个问题,这个bind绑定端口,是将本来没有源端口的socket绑定到我们指定的端口上,还是将一个已经分配了端口的socket重定向到我们指定的端口上呢?  在《UNIX网络编程》这本书中提到:&如果一个TCP客户或者服务器未曾调用bind捆绑一个端口,当调用connect或listen时,内核就要为相应的套接字选择一个临时接口。&从这句话中可以判断出,其实在调用socket函数创建socket时,内核还并未给socket分配源地址和源端口。而对于UDP,我猜测在调用sendto发送数据时,在未捆绑端口的情况下,内核也会随机分配端口。  而我遇到的特殊应用要求我在用UDP发送数据之前要告诉对方我的发送端口,这也就意味着我在sendto之前必须要捆绑端口,因此我在发送数据之前就得调用bind函数绑定一下端口了。但是我就在想内核既然有随机分配端口的能力,而我需要的也只是让它绑定一下而不用绑定在固定端口的业务,socket中应该能够提供这种业务。然后果然我发现bind就具备这种能力,当bind的参数中端口地址为0的时候,这时候就是由内核分配端口。这样我就不用考虑端口地址重复的问题,而放心的把这个问题交给内核处理了。  就在发现bind的这个机制的同时,我发现其实bind对于源地址也同样具备这种处理方式,当系统具有多IP(多网卡)的情况,当我们把bind函数中的ip参数置0时,就是由内核自己选择分配IP。而之前一直觉得很神奇的INADDR_ANY其实一点也不神奇,它的值其实就是0。所以当我们只有单一IP的时候,我们就可以用INADDR_ANY去代替那个单一的IP,因为内核分配的时候只能选择这一个IP。从而造成了INADDR_ANY就是本机IP的现象。新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID7283204空间积分0 积分525阅读权限20帖子精华可用积分525 信誉积分100 专家积分0 在线时间71 小时注册时间最后登录
丰衣足食, 积分 525, 距离下一级还需 475 积分
帖子主题精华可用积分525 信誉积分100 专家积分0 在线时间71 小时注册时间最后登录
论坛徽章:0
就是发用udp包,客户端不用bind()也行。书上说了半天,觉得还是莫名其妙的,后面觉得还是要干净利索点,还是bind()了,运行起来也没问题。但真正要比较的时候,这两种写法会有些什么实质性的差别呢?如果都一样的话,为了思路清楚和统一,我还是愿意bind再做别的。
我说清楚一点吧。
就是在客户端那里,有这样一个过程:
sendto(sockfd, ...);// Sending message to the server without binding
recvfrom(sockfd, ...);//waiting for the server's responding
& && && && && && && && && && &&&//notice, it's the same socket that has not been binded address manually.
是不是在第一次sendto的时候,系统就给那个socket捆绑上那个地址了呢?
[ 本帖最后由 longtem 于
18:10 编辑 ]
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分9636阅读权限90帖子精华可用积分9636 信誉积分136 专家积分190 在线时间312 小时注册时间最后登录
腰缠万贯, 积分 9636, 距离下一级还需 364 积分
帖子主题精华可用积分9636 信誉积分136 专家积分190 在线时间312 小时注册时间最后登录
论坛徽章:0
不用bind没法设定客户端的socket参数
没有用无bind的send(UDP)
不用bind,则不能设定客户端的socket参数()?
SOCKADDR_IN local_
unsigned short&&
& && & local_address.sin_family=PF_INET;
& && & local_address.sin_addr.s_addr=INADDR_ANY; //所有出口
& && & local_address.sin_port=htons(portno);
& && & local_address.sin_family=PF_INET;
& && & local_address.sin_addr.s_addr=inet_addr(&192.168.1.188&);&&//指定出口
& && & local_address.sin_port=htons(portno);
& && & s=socket(AF_INET,SOCK_DGRAM,0);
& && & nRet=bind(s,(LPSOCKADDR)&local_address,sizeof(SOCKADDR_IN));&&//设定客户端的socket参数(出口,端口)
UID空间积分0 积分1336阅读权限30帖子精华可用积分1336 信誉积分100 专家积分0 在线时间48 小时注册时间最后登录
家境小康, 积分 1336, 距离下一级还需 664 积分
帖子主题精华可用积分1336 信誉积分100 专家积分0 在线时间48 小时注册时间最后登录
论坛徽章:0
自动帮你bind了
UID9418874空间积分0 积分25208阅读权限100帖子精华可用积分25208 信誉积分340 专家积分439 在线时间13570 小时注册时间最后登录
帖子主题精华可用积分25208 信誉积分340 专家积分439 在线时间13570 小时注册时间最后登录
论坛徽章:0
udp不需要绑定,可以直接用sendto把数据发给目标地址。
欢迎访问学习虫社区--学习知识,分享知识!
UID空间积分0 积分9636阅读权限90帖子精华可用积分9636 信誉积分136 专家积分190 在线时间312 小时注册时间最后登录
腰缠万贯, 积分 9636, 距离下一级还需 364 积分
帖子主题精华可用积分9636 信誉积分136 专家积分190 在线时间312 小时注册时间最后登录
论坛徽章:0
原帖由 longtem 于
16:29 发表
就是发用udp包,客户端不用bind()也行。书上说了半天,觉得还是莫名其妙的,后面觉得还是要干净利索点,还是bind()了,运行起来也没问题。但真正要比较的时候,这两种写法会有些什么实质性的差别呢?如果都 ...
实质性的差别: 系统用default自动bind
& && && && && && &&&指定你自己的socket 参数(特别是在指定特定端口的UDP对等通信)
UID空间积分0 积分9636阅读权限90帖子精华可用积分9636 信誉积分136 专家积分190 在线时间312 小时注册时间最后登录
腰缠万贯, 积分 9636, 距离下一级还需 364 积分
帖子主题精华可用积分9636 信誉积分136 专家积分190 在线时间312 小时注册时间最后登录
论坛徽章:0
回复 #1 longtem 的帖子
&为了思路清楚和统一,我还是愿意bind再做别的&
& &这是一个良好的习惯
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处

我要回帖

更多关于 百度云不用客户端下载 的文章

 

随机推荐