doc

基于Socket网络通信协议的应用研究(最终修改)

  • 1星
  • 日期: 2018-07-18
  • 大小: 311KB
  • 所需积分:1分
  • 下载次数:1
  • favicon收藏
  • rep举报
  • free评论
标签: 网络通信协议

网络通信协议

Socket

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

基于Socket网基于Socket网络通信协议的应用研究,很好的通信资料。

文档内容节选

摘要 1 前言 2 1 Socket的定义和工作原理 2 2 支持Socket的操作系统 2 21 Linux环境中的Socket 2 211 Linux的Socket的提出 2 212 Linux的Socket的工作方式 3 22 Windows NT系统环境中对Socket的支持 4 221 WinsockWindows Socket的提出 4 322 Winsock的原理 4 323 Winsock的通讯方式 4 3 Socket开发工具的讨论 5 31 C中socket编程实现 5 32 Delphi中socket的操作方法 5 321 ServerSocket的属性设置 5 322 ClientSocket的属性 5 4 Socket在TCP与UDP协议集中的工作方式 6 41 传输层的TCP与UDP 6 42传输层端口与 Socket 6 43 用Socket实现基于TCP和UDP的原理 7 5 Socket在Java编程语言中的应用以及实现 8 51 Socket在Java中的工作流程 8 52 在Java中实现......

摘要 1 前言 2 1 Socket的定义和工作原理 2 2 支持Socket的操作系统 2 2.1 Linux环境中的Socket 2 2.1.1 Linux的Socket的提出 2 2.1.2 Linux的Socket的工作方式 3 2.2 Windows NT系统环境中对Socket的支持 4 2.2.1 Winsock(Windows Socket)的提出 4 3.2.2 Winsock的原理 4 3.2.3 Winsock的通讯方式 4 3 Socket开发工具的讨论 5 3.1 C#中socket编程实现 5 3.2 Delphi中socket的操作方法 5 3.2.1 ServerSocket的属性设置 5 3.2.2 ClientSocket的属性 5 4 Socket在TCP与UDP协议集中的工作方式 6 4.1 传输层的TCP与UDP 6 4.2传输层端口与 Socket 6 4.3 用Socket实现基于TCP和UDP的原理 7 5 Socket在Java编程语言中的应用以及实现 8 5.1 Socket在Java中的工作流程 8 5.2 在Java中实现Socket通讯 8 5.2.1 创建Socket和ServerSocket对象 8 5.2.2 创建服务器端 9 5.2.3建立客户端 9 6 结论 10 参考文献 12 基于Socket网络通信协议的应用研究 马文超 摘要:Socket简称套接字,用于实现网络上客户和服务器之间的连接,也就是说网络上 两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点称为套接字, 套接字是在比较低的层次上通信的,不同的操作系统对Socket有不同的支持方式,不同 的开发工具,对Socket的实现也均不相同,而且Socket在TCP与UDP两大协议族系中也有 各自的工作方式。 关键词:Socket;网络连接;网络通讯 Study Based on the Application of Socket Network Communication Agreement Ma Wen-chao Abstract: Socket called socket, for the realization of the network connection between client and server, meaning that two or more network communication duplex mode there is always a connection between the process, known as the set of the connection endpoint received word, the socket is a relatively low level in the communications, different operating system support for Socket different ways, different development tools, implementation of the Socket are not the same, but in the TCP and UDP Socket Two protocol family lines also have their own work. Key words: Socket;Network Connection;Network communication 前言 随着网络通信技术的不断发展,Socket开发和研究已成为人们关注的热点。Socke既 适用于同一台计算机上的进程间通信,也适用于网络环境中的进程间通信。它已成为当 前许多操作系统的网络API,也是网络操作系统中必不可少的基础功能。套接字是通信的 基本元件,两个进程为了进行通信,首先必须设置套接字。通俗讲,套接字相当于由其 名字连接起来的通信线路的端点,这种连接不仅适用于本地进程之间的通信,而且也使 用语远地进程之间的通信。用套接字连接的两个进程可双向通信,且两通信端点的工作 方式是不同的,一端须工作于服务方,另一端须工作于客户方。 本文从多个方面介绍了Socket的应用开发、实现环境以及工作流程,并用JAVA开发工 具在Windows NT系统上实现网络通讯为例来对Socket套接字做了更加深入的介绍。 1 Socket的定义和工作原理 Socket套接字,英文原义是插座的意思,是进程之间通信的抽象连接点,可以通过一 个形象的例子来理解这个概念,现实生活中的电话是人们联系的常用工具,双方只要使 用两部电话机就可以交谈,在计算机世界中,两个程序就是使用Socket进行通信的,一 个Socket就好比一部电话机,两个程序在网络上通过一个双向链路进行通信,这个双向 链路的每一端就成为一个Socket。 进程之间要通信,首先要建立各自的Socket就像要打电话一定要先有电话机一样,打 电话时每部电话机都可以说和听。与此类似,每个Socket也都可以进行读、写操作,读 、写操作时分别要用到Socket中的输入流和输出流。 建立连接后,客户程序可以向Socket里写入请求,然后服务器会处理这个请求,并把 处理结果通过Socket送回。服务器应用程序一般监听一个特定端口以等待一个客户的连 接请求,当一个连接请求到达时,客户和服务器建立一个通信连接。在连接过程中,客 户被分配一个本地端口号并且与一个Socket连接,客户通过写Socket来通知服务器,通 过读Socket来获取信息。类似地,服务器也获取一个本地端口号,它需要一个新的端口 号来监听原始端口上的其它连接请求。服务器也给它的本地端口连接一个Socket,读写 来自客户的请求。 目前可以使用两种Socket,即流式Socket和数据报式Socket。流式Socket提供了双向 的、有序的、无重复并且无记录边界的数据流服务。TCP即是一种流式Socket协议;数据 报式Socket支持双向的数据流,但并不保证可靠、有序、无重复 也就是说,一个以数据报式Socket接收信息的进程有可能发送信息重复了,或者和发出 的顺序不同。数据报式Socket的一个重要特点是它保留了记录边界。UDP即是一种数据报 式Socket协议。 2 支持Socket的操作系统 Socket是网络通讯的基本元件,所有涉及到TCP/IP应用层进程的操作系统都会对Socket 有所支持,但不同的操作系统对Socket的支持方式均不相同。 2.1 Linux环境中的Socket 2.1.1 Linux的Socket的提出 Linux操作系统与网络联系密切,它不仅具有稳定、简易、高效、兼容性好等特点, 并且支持多种网络协议,如IPv4、IPv6、X125、IPX、NETB IOS、DDP 等,因此被广泛应用于网络服务领域。而在Linux 环境下开发出高性能的网络通信程序,也是充分发挥Linux 网络特性的一个关键因素。在Linux 系统中,套接字(Socket)是介于应用层和传输层之间的编程接口,它提供了访问下层 通信协议的大量系统调用和相应的数据结构功能。套接字接口也是应用程序访问下层网 络协议的惟一方法。具体地讲,套接字在用户级实现了两个应用程序之间的网络连接和 数据交换,所以Linux中的套接字意味着网络上的通信。Linux套接字在网络模型中的地 位如图2-1 所示。 [pic] 图2-1 Linux套接字的网络模型 2.1.2 Linux的Socket的工作方式 Socket在Linux中使用的是标准系统文件描述符(File Descriptor)和其它程序通信的一种方式。一个套接字描述作为一个通信连接的一端, 在一个网络通信连接中的两端通信程序应各自有一个套接字来描述它们自己那一端,不 同主机中的两个进程通过各自的套接字发送和接收消息,从而实现了进程间跨网络的通 信。Linux的套接字支持多种网络协议,不同类型网络协议的工作方式不同,所使用的地 址格式也完全不同。对于各种网络协议而言, 使用相同地址格式的几个协议称为一个协议地址族,表2- 1列出了套接字的常见地址族。 表2-1 Linux套接字地址族的主要类型 [pic] Linux将套接字地址族抽象为统一的套接字接口,该接口是应用程序的开发接口,由 各地址族专有的软件支持。Linux socket支持以下常见套接字类型: (1)SOCK_STREAM(数据流套接口):提供一个面向连接的双工顺序数据流传输和可靠 的数据传输服务。这种套接字可以保证数据传输的可靠性,不会出现数据丢失、破损或 重复出现等差错,而且通过流量控制可避免发送的数据流超限。它是最常见的套接字类 型,文件传输协议(FTP)即使用流式套接字,Internet 中的TCP协议也支持流套接字。 (2)SOCK_DGRAM(数据报套接口):提供一个无连接和不可靠的双工数据传输服务。 数据包以独立包形式被发送和接收,不对数据的传输提供无错保证,即数据可能被丢失 、破坏,也可能被重复接收。Internet中的UDP协议支持这种套接字。 (3)SOCK_RAW(原始套接口):这种类型的套接字允许对低层协议, 如IP 或ICMP 直接访问;可以直接填充IP、TCP、UDP或者ICMP的包头,发送用户自己定义的IP包或者 ICMP包。它主要用于协议的开发。 2.2 Windows NT系统环境中对Socket的支持 2.2.1 Winsock(Windows Socket)的提出 90年代初,由Microsoft联合其他几家公司共同制定了一套Windows环境下的网络编程 接口,即Windows Socket规范。它是Berkeley Sockets的重要扩充 ,主要体现在它增加了一些异步函数和符合Windows消息驱动特性的网络事件异步选择机 制。Windows Socket规范是一套开放的支持多种协议的Windows下的网络编程接口。目前实际应用中的 Windows Sockets规范主要有1.1版和2.0版,其中1.1版只支持TCP/IP协议,而2.0版支持多协议, 并具有良好的向后兼容性。目前Windows下的Internet软件基本都是基于WinSock开发的 。Windows Sockets规范定义并记录了如何使用API和Internet协议族(TCP/IP协议族)连接,尤其要 指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口。应用程序调用windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间 的关系如图2-2所示。 [pic] 图2-2 应用程序与Windows Socket关系图 3.2.2 Winsock的原理 Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Soc ket接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个Socket接口来实 现。在应用开发中就像用文件句柄一样,可以对Socket句柄进行读、写操作。 3.2.3 Winsock的通讯方式 使用Socket进行通讯的方式有 3种:字节流套接字(StreaSocket):TCP/IP协议族中TCP协议使用此类接 口,它提供面向连接的(建立虚电路)、无差错的、发送顺序致的、包长度不限和非重复 的网络信包传输;数据报套接字(Datagram Socket):TCP/IP协议族中的UDP(User.Datagram Protoco1)协议使用此类接口,它是无连接的服务,以独立的信包进行网络传输 ,信包最大长度为32kB,传输不保证顺序性、可靠性和无重复性,通常用于单个报文传 输或可靠性要求不高的场合;原始数据包套接字(RawSocket):提供对网络下层通信协议 (如IP协议)的直接访问,一般不是提供给普通用户的,主要用于开发新的协议或用于提 取协议较隐蔽的功能。其中字节流套接字是最常用的套接字类型。 3 Socket开发工具的讨论 套接字是通信的基石,是支待TCP/IP协议的网络通信的本操作单元,所以在各种网络 应用程序中,凡是涉及到数据传送和接收,一般都会使用Socket. 3.1 C#中socket编程实现 Visual C#主要网络功能主要使用.Net FrameWork SDK中的提供的二个命名空间"System.Net.Sockets"和"System.Net" 而实现Socket使用的是命名空间"System.Net.Sockets" 中的Socke类.在.Net中System.Net.Sockets命名空间为需要严密控制网络访问的开发人 员提供了Windows Sockets (Winsock)接口的托管实现。.Net 类可以视为包含3个层次:请求/响应层、应用协议层、传输层。 Socket类处于传输层。System.Net命名空间中的所有其他网络访问类都建立在该套接字 Socket实现之上。Visual C#通过创建Socket类的实例来实现Socket 的托管。 在 Visual C#中首先创建Socket对象的实例,创建完Socket实例后,可以通过此Socket实例的Bin d方法绑定到网络中指定的终结点,也可以通过其 Connect方法向指定的终结点建立的连接。连接创建完毕,就可以使用其Send或SendTo方 法将数据发送到Socket;同样使用其的Receive或ReceiveFrom方法从Socket中读取数据 。在Socket使用完毕后,请使用其的Shutdown方法禁用Socket并使用Close方法关闭Soc ket。 3.2 Delphi中socket的操作方法 根据连接发起的方式以及本地Socket要连接的目标,Socket之间的连接可以分为:客 户端连接、监听连接以及服务器端连接。 Delphi分别使用ClientSocket组件和ServerSocket组件来操纵客户端Socket和服务器 端Socket的连接和通信。ClientSocket组件为客户端组件。它是通信的请求方,也就是 说,它是主动地与服务器端建立连接。ServerSocket组件为服务器端组件。它是通信的 响应方,也就是说,它的动作是监听以及被动接受客户端的连接请求,并对请求进行回 复。ServerSocket组件可以同时接受一个或多个ClientSocket组件的连接请求,并与每 个ClientSocket组件建立单独的连接,进行单独的通信。 3.2.1 ServerSocket的属性设置 (1)Port是通信的端口,必须设置。 (2)ServerType服务器端读写信息类型,设置为stThreadBlocking表示异步读写信息, 本文实例中采用这种方式。 (3)ThreadCacheSize,客户端的最大连接数,就是服务器端最多允许多少客户端同时 连接。 3.2.2 ClientSocket的属性 (1)Port,是通信的端口,必须与服务器端的设置相同。否则可能导致两个组件发送的 目标端口和接收的端口不一致,无法建立有效的信息传送连接。 (2)ClientType,客户端读写信息类型,应该与服务器端的设置相同,为ctNonBlocki ng 示异步读写信息。 4 Socket在TCP与UDP协议集中的工作方式 4.1 传输层的TCP与UDP TCP/IP协议体系结构中的传输层有两个并列的协议:TCP和UDP。其中TCP是面向连接 的,它在两个TCP端点之间支持面向连接的、可靠的传输服务。UDP是无连接的,用于在 两个UDP端点之间支持无连接的、不可靠的传输服务。一般情况下,TCP和UDP共存于一个 网间网中,前者提供高可靠性服务,后者提供高效率服务TCP/IP协议族的层次结构如图 4-1 所示 [pic] 图4-1 TCP/IP协议族的层次结构 4.2传输层端口与 Socket 在进程通信的意义上,网络通信的最终地址不仅仅是网络层提供的主机IP地址,还应 该包括描述进程的某种标识符,因此TCP和UDP都提出了协议端口的概念,用于标识通信 的进程。具体地说,端口用来标识应用层进程。 。 每个端口都拥有一个称做端口号的整数标识符,用于区分不同端口。由于TCP和UDP是 完全独立的两个软件模块。因此各自的端口号也相互独立,也就是说,TCP和UDP都有70 端口,而两个端口都不会冲突 。根据TCP和UDP的报文格式的规定,两个协议分别提供65536个不同的端口值。端口号分 为两类:一类是由因特网指派名字和号码公司I-CANN负责分配给一些常用的应用层程序 固定使用的熟知端口,其数值一般为0~1023,其中TCP和UDP均规定小于 256 的端口号作为保留端口。例如FTP用1、Telnet用23、SMTP用25、DNS用53、HTTP用80、S NMP用161等。当一个新的应用程序出现时,必须为其指派一个熟知端口,否则其它的应 用进程就无法与其进行交互;另一类是自由端口,端口分配使用动态联系方式,也称为 本地分配。进程需要访问传输服务时,向本地操作系统提出动态申请,操作系统返回一 个本地惟一的端口号,进程在通过合适的系统调用将自己和相应端口号联系起来。当进 程要与远地进程通信前,首先申请一个自由端口,然后根据全局分配的公认端口号与远 地服务器建立联系,才能传输数据。 Socket由4BSD UNIX首先提出,目的是解决网间网进程通信的问题。进程通信前,双方首先各自创建一 个端口,每一个Socket有一个本地惟一的Socket号,由操作系统分配,Socket包括IP地 址(32位)和端口号(16位),共48位。插口、端口和IP地址的关系如图4-2所示。 [pic] 图4-2 插口、端口和IP地址的关系 4.3 用Socket实现基于TCP和UDP的原理 Socket有两种主要的操作方式:面向连接的和无连接的。面向连接的Socket操作就相 当于电话,当两个人通话时。他们必须建立一个连接,所有的事情在到达时的顺序与它 们出发时的顺序是一样的,面向连接的BSD UNIX Socket的工作流程如图4- 3所示。无连接的Socket操作就像是一个邮件投递,多邮件可能到达时的顺序与出发时的 顺序不一样。 [pic] 图4-3 面向连接的客户端/服务器时序图 使用哪种模式由应用程序的需要决定。如果可靠性更重要的话,用面向连接的操作会 好一些。比如文件服务器需要它们的数据正确性和有序性。如果一些数据丢失了,系统 的有序性就会失去。一些服务器,比如间歇性地发送一些数据块,如果数据丢了的话, 服务器并不想再重新发送一次。因为当数据到达的时候,它可能已经过时了。确保数据 的有序性和正确性需要额外的内存消耗,额外的费用将会降低系统的回应效率。 无连接的操作使用数据报协议。一个数据报是一个独立的单元,它包含了所有的这次 投递信息。把它想象成一个信封,它有目的地址和要发送的内容。这个模式下的Socket 不需要连接一个目的的Socket,它只是简单地投出数据报。无连接的操作是快速和高效 的,但是数据的安全性不佳。面向无连接的BSD UNIX Socket工作流程如图4-4所示。 [pic] 图4-4 面向无连接的客户机/服务器时序图 5 Socket在Java编程语言中的应用以及实现 5.1 Socket在Java中的工作流程 Java编程语言是现在Internet上最流行的一种编程语言。一般来说,网络中互相通信 的两端,其中提供服务的一端叫服务器,而请求服务的一端叫客户机。Socket通常用来 实现Client/Server设计过程,所谓Client/Server是指通信双方一方作为服务器(Serv er)等待客户(Client)提出请求并予以响应。客户则在需要服务时向服务器提出申请 。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个 服务进程来响应客户,同时继续监听服务端口,使其它客户的请求也能及时得到处理。 一般连接过程是:Serve端Listen(监听)某个prot(端口)是否有连接请求,Client端 向Server端发出 Connect(连接)请求,Server端向Client端发回Accept(接受)消息,一个连接就建立 起来了。Server 端和Client端都可以通过Send、Write等方法与对方通信。 5.2 在Java中实现Socket通讯 5.2.1 创建Socket和ServerSocket对象 首先在服务器端,通过创建ServerSocket类对象,来创建服务器对象,其格式如下: ServerSocket服务器对象名=new ServerSocket(端口号); 然后通过调用accept()方法来创建一个Socket对象,其格式如下: Socket对象名=服务器对象名accept();() 服务器端可以利用这个Socket对象与客户端进行通讯,用下面的语句得到输入流和输 出流: BufferedReader in=new BufferedReader(new InputStreamReader(Socke对象名.getInputStream())); PrintWriter out =new PrintWriter(Socket对象名.getOutPutStream()true,); 随后就可以使用in.readLine()方法得到客户端的输入,也可以使用out.println()方 法向客户端发送数据.从而可以根据程序的需要对客。户端的不同请求进行回应。 在所有通信结束后,应该关闭输入流和输出流,释放系统资源.关闭的顺序是先关闭 输入流和输出流,然后再关闭Socket,调用的方法均为close方法。 5.2.2 创建服务器端 下面创建了一个简单的服务器端测试程序的部分语句: ServerSocket thisServer=new ServerSocket(8186); Socket thisSocket=theServer.accept(); BufferedReader in =new BufferedReader(new InputStreamReader (thisSocket.getInputStream())); PrintWriterout Out=new PrintWriter(newOutputStreamWriter (thisSocket.getOutputStream(),true ); String str=in.readLine(); 下面的程序段是服务器测试程序,服务器接收客户机发来的信息,并显示在屏幕上: import java.net.*; import java.io.*; public class ServerTest {Public static void main(String args[ ]) { ServerSocket serversocket; Socket clientSocket; DataOutputStream dataOutput; DataInputStream dataInput; String receiveString; clientSocket=serverSocket.accept(); dataOutput =new dataOutputStream (clientSocket.getOutputStream()); dataInput=new dataInputStream(clientSocket.getInputStream()); dataOutput.writeUTF(sendString); 5.2.3建立客户端 与建立服务器端相比,客户端要简单一些,客户端只需用服务器所在机器的IP以及服 务器的端口作为参数创建一个Socket类对象。得到这个对象后,就可以实现数据的输入 与输出。 下面的程序代码创建了一个Socke类对象client,client连接到IP地址为192.168.1. 22的主机上的端口为8186的服务器,并且建立了输入和输出流,分别对应服务器的输出 和客户端的输入。 Socket client=new Socket("192.168.1.22"8186); BufferedReader in=new BufferedReader(new InputStreamReader (client.getInputStream())); printWriter out =new printWriter(client. getOoutputStream(),true); 这里只是简单介绍了java.net包中的Socket和ServerSocket类中的常用方法,以此来 实现使用Socket进行通信。其实除此之外,Java语言与网络操作相关的包还有java.io、 java.applet、java.util、java.sql、java.rmi 和java.mail等。 6 结论 本文详细介绍了Socket套接字在不同的操作系统,不同编程语言以及不同的协议集中 的实现和支持情况,最后用Java编程语言利用Winsock(Windows Socket)套接楼实现网络通讯的实例,更进一步的介绍了Socket更为详细的工作流程,最 终得出:Socket套接字就是工作在TCP/IP参考模型的传输层之上、引用层之下的一个AP I通道,由它来连接TCP/IP参考模型的应用层与下三层数据通道。 谢 辞 经过这些天的努力,我终于完成了基于Socket网络通信协议的应用研究论文。在此我 非常感谢我的指导老师,感谢她对我的悉心指导与帮助。当我无力面对制作论文过程中 的难题时,他细心地记下我的问题,在百忙之中抽空为我解决各方面的问题。给我解决 了很多我以前不懂的问题,也使我掌握了很多有用的东西,同时我也学到了很多新鲜的 知识点。也感谢学院给我这样一个机会,制作毕业设计的过程虽是对我们所学知识的检 查,但更多的是使我们的专业知识有了提升,用到实际生活中去了。 参考文献: [1] 方军,吴晓冰.中间件TCP/IP网络接口的实现[J].微电脑世界周刊,1999, (29) :74- 77 [2] 于涛.基于Socket通讯技术的上层监控软件的实现[M].计算机技术与发展,2009,03(10): 26-27 [3] 邹月.Socket的网络编程研究与实现.电脑编程技巧与维护,2009,08. [4] 李巧玲.基于C#-Socket的网络通信程序设计.福建电脑,2009,04. [5] 罗亚非.基于TCP的Socket多线程通信.电脑知识与技术,2009,03. [6] 陈晓舟.使用Socket组件开发C/S网络考试系统.硅谷,2009,04. [7] 徐小蕾.分层系统Socket通信软件的设计与实现.计算机应用与软件.2009,01. [8] 郭东升.Linux环境下基于Socket的网络通信.软件导刊,2009,01. [9] 王丰锦,邵新宇.基于Socket和多线程的应用程序间通信技术的研究[J].计算机应用,20 00,20(6):65-67 [10] Workflow Management Coalition.WfMC-TC00-1003,1995.The Workflow Reference Model[S]. [11] Wong RW,Rabie.Hisrologic And Ultrastructual Ttudy On Statin Graft In Rabbit Skulls.J Oral Maxillofac Surg,2005,63(10):1515-1521. . [pic] |专业论文 | | |题 目: |基于Socket网络通信协议的应用与研究 | | |姓 名: |马文超 | | |学 院: |计算机与信息工程学院 | | |专 业: |电子信息科学与技术 | | |班 级: |062 | | |学 号: |064633231 | | |指导教师: |白涛 职称: 教师 | |2010年5月18日 | |新疆农业大学教务处制 |
更多简介内容

推荐帖子

评论

combat
学习参考一下,多谢
2021-02-02 10:23:27回复
登录/注册

意见反馈

求资源

回顶部

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })
×