E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
网络编程学习笔记
网络编程学习笔记
--1.socket可读可写条件
欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45788591socket可读可写条件,经常做为面试题被问,因为它考察被面试者对网络编程的基础了解的是不是够深入。要了解socket可读可写条件,我们先了解几个概念:1.接收缓存区低水位标记(用于读)和发送缓存区低水位标记(用于写):每个套接字有一个接收低水位和一个
majianfei1023
·
2015-06-12 20:00
socket
面试题
缓存
网络编程
可读可写
java
网络编程学习笔记
一
一.什么是TCP?什么是UDP?tcp和udp是两种网络信息传输协议,都能够进行网络通信,可以选择其中的一种。TCP最重要的特点是面向连接,也就是说必须在服务器端和客户端连接上之后才能通信,它的安全性比较高。udp编程是面向非连接的,udp是数据报,只负责传输信息,并不能保证信息一定会被收到,虽然安全性不如TCP,但是性能较好;tcp基于连接,udp基于报文。二.客户端和服务器客户端(Client
carlos
·
2015-03-08 00:00
网络编程学习笔记
(获取所有网络接口)
主要是用ioctl函数,同时需要头文件/*net/if.h--declarationsforinquiringaboutnetworkinterfaces Copyright(C)1997-2014FreeSoftwareFoundation,Inc. ThisfileispartoftheGNUCLibrary. TheGNUCLibraryisfreesoftware;youcanredis
wuli2496
·
2015-01-10 21:00
网络编程学习笔记
(广播)
IPv4对广播的支持是可选的,而IPv6是必须的IPv6没有提供对广播的支持:当使用广播的IPv4应用程序移植到IPv6时,必须使用IPv6的多播方式进行重新编码广播和多播要使用UDP,二者都不能使用TCP使用广播的实例:1、ARP(地址解析协议)arp是ipv4的一个基本组成部分,而不是一个用户应用程序。2、BOOTP(引导协议)客户假定有一台服务器主机在要地子网上,它以广播地址为目的地址发出自
wuli2496
·
2014-11-08 21:00
网络编程学习笔记
(ioctl操作)
1、ioctl函数其函数需要的头文件及声明如下:#include intioctl(intfd,intrequest,.../*void*arg/);第三个参数总是一个指针,但指针的类型依赖于request把和网络有关的请求分为6类:(1)套接口操作(2)文件操作(3)接口操作(4)ARP高速缓存操作(5)路由表操作(6)流系统2、套接口操作有三种ioctl请求是针对套接口的,它们都要求ioctl
wuli2496
·
2014-11-08 11:00
网络编程学习笔记
(非阻塞accept)
修改TCP回射客户程序,在跟服务器建立连接后发送一个RST。这种情况可以如下模拟:一旦建立连接,设置SO_LINGER选项,把l_onoff标志置为1,l_linger时间置为0。在关闭连接时,TCP套接口会发送一个RST服务器端select向服务器进程返回可读,但服务器要在一段时间后才能调用accpet,在服务器从select返回和调用accept之间,收到来看客户端的RST,这个已完成的连接从
wuli2496
·
2014-11-07 22:00
网络编程学习笔记
(非阻塞connect)
设置非阻塞,如果返回EINPROGRESS,表示正在建立连接,还没有完成非阻塞的三个用途:1、我们可以在三路握手的同时做其它的处理。connect要花一个往返时间完成,而且可以是在任何地主,从几个毫秒的局域网到几百毫秒或几秒的广域网,在这段时间内我们可能有一些其他的处理想要执行2、可以用这种技术同时建立多个连接。这在web浏览器中很普遍3、由于我们用select等待连接的完成,因此可以给selec
wuli2496
·
2014-11-06 23:00
网络编程学习笔记
(非阻塞读和写)
维护两个缓冲区:to容纳从标准输入到服务器的数据,from容纳从服务器到标准输出的数据toiptr指向从标准输入读入的数据可以存放的下一个字节,tooptr指下一个必须写入到套接口的字节。有(toiptr-tooptr)个字节需写到套接口。friptr表示从套接口读入的数据可以存放的下一个字节,froptr表示下一个必须写到标准输出的字节将套接口、标准输入、标准输出设置为非阻塞时,如果写或读没有成
wuli2496
·
2014-11-06 21:00
网络编程学习笔记
(socketpair函数)
socketpair函数建立一对相互连接的套接口,这个函数只对Unix域套接口适用,其定义如下:#include intsocketpair(intfamily,inttype,intprotocol,intsockfd[2]); 成功返回0,失败返回-1family必须为AF_LOCAL,protocol必须为0,type可以是SOCK_STREAM或SOCK_DGRAM。新创建的两个套接口描述
wuli2496
·
2014-11-04 22:00
网络编程学习笔记
(Unix域套接口地址)
Unix域协议并不是一个实际的协议族,它只是在现一台主机上进行客户-服务通信时,使用与在不同主机上的客户和服务器间通信时相同的API的一种方法,当客户和服务器在同一台主机上时,Unix域协议是IPC通信方式的一个替代品使用Unix域套接口有三个原因:1、当通信双方在同一台主机上时,Unix域套接口的速度通常是TCP套接口的两倍2、Unix域套接口可以用来在同一台主机上的各进程之间传递描述字3、Un
wuli2496
·
2014-11-04 21:00
网络编程学习笔记
(辅助数据)
在sendmsg和recvmsg时使用msghdr结构中的msg_control和msg_controllen成员发送的接收辅助数据。辅助数据的另一种叫法是控制信息。协议cmsg_levelcmsg_type说明IPv4IPPROTO_IPIP_RECVDSTADDR或IP_RECVIF接收UDP数据报的目的地址接收UDP数据报接口索引IPv6IPPROTO_IPV6IPV6_DSTOPTSIPV
wuli2496
·
2014-11-04 21:00
网络编程学习笔记
(readv和writev函数)
这两个函数与read和write相似,但readv和writev可以让我们在一个函数调用中读取多个缓冲区,这些操作被称为分散读和集中写。其函数原型为:#include ssize_treadv(intfiledes,conststructiovec*iov,intiovcnt); ssize_twritev(intfiledes,conststructiovec*iov,intiovcnt);
wuli2496
·
2014-10-26 23:00
网络编程学习笔记
(getnameinfo函数)
这个函数与getaddrinfo互补,它以一个套接口地址为参数,返回一个描述主机的字符串和一个描述服务的字符串。其函数原型如下:#include intgetnameinfo(conststructsockaddr*sockaddr,socklen_taddrlen,char*host,size_thostlen,char*serv,size_tservlen,intflags); 成功返回0,出
wuli2496
·
2014-10-12 15:00
网络编程学习笔记
(udp_server函数)
创建一个UDP口的服务端,其代码如下:#include #include #include #include #include #include #include #include #include #include #defineMAXLINE128 intudp_server(constchar*host,constchar*serv,socklen_t*addrlenp) { intso
wuli2496
·
2014-10-12 15:00
网络编程学习笔记
(udp_connect函数)
创建一个连接UDP套接口的客户端,代码如下:#include #include #include #include #include #include #include #include #include #defineMAXLINE128 intudp_connect(constchar*host,constchar*serv) { intsockfd,n; structaddrinfohi
wuli2496
·
2014-10-12 15:00
网络编程学习笔记
(tcp_connect函数)
执行客户端程序的一般操作步骤,创建一个TCP套接口并与服务器建立连接,其代码如下:#include #include #include #include #include #include #include #include #defineMAXLINE128 #defineMAXSOCKADDRsizeof(structsockaddr) structaddrinfo*host_serv(c
wuli2496
·
2014-10-11 21:00
网络编程学习笔记
(freeaddrinfo函数)
由getaddrinfo返回的存储空间,包括addrinfo结构、ai_addr结构和ai_canonname字符串,都是用malloc动态获取的。这些空间可调用freeaddrinfo释放。其原型如下:#include voidfreeaddrinfo(structaddrinfo*ai); ai指向getaddrinfo返回的第一个addrinfo结构。在该链表中的所有结构,以及这些结构所指向
wuli2496
·
2014-10-10 20:00
网络编程学习笔记
(gai_strerror函数)
getaddrinfo出错时返回非零值,gai_strerror根据返回的非零值返回指向对应的出错信息字符串的指针,其原型如下:#include char*gai_strerror(interror); 常量描述EAI_ADDRFAMILY不支持hostname的地址族EAI_AGAIN名字解析中的暂时失败EAI_BADFLAGSai_flags的值无效EAI_FAIL名字解析中不可恢复的失败EA
wuli2496
·
2014-10-10 20:00
网络编程学习笔记
(getaddrinfo函数)
函数getaddrinfo在库函数中隐藏了所有协议依赖性。应用程序只需要处理由getaddrinfo填写的套接口地址结构。其函数原型为:#include intgetaddrinfo(constchar*hostname,constchar*service,conststructaddrinfo*hints,structaddrinfo**result);成功返回0,出错返回非零这个函数通过res
wuli2496
·
2014-10-08 22:00
网络编程学习笔记
(getservbyname和getservbyport函数)
通过服务器的名字而不是服务器端口号来认知它,而且如果从主机到端口号的映射包含在一个文件中(一般是/etc/services),则如果端口号改变,我们所需做的所有改动就是改动文件/etc/services中的一行,而不是重新编译应用程序。getservbyname函数原型为:#include structservent*getservbyname(constchar*servname,constch
wuli2496
·
2014-10-07 19:00
网络编程学习笔记
(gethostname函数)
返回当前主机的名字,原型为:#include intgethostname(char*name,size_tnamelen); 成功返回0,失败返回-1代码如下:#include #include #include #include #defineBUFLEN128 intmain(intargc,char**argv) { charbuf[BUFLEN]; if(gethostname(
wuli2496
·
2014-10-07 14:00
java中的
网络编程学习笔记
Java编程中提供了强大的网络编程功能,能够处理各种网络资源,以及进行网络通信。Java.net包定义了java语言网络编程的主要工具类。其中,包括代表网络IP地址的InetAddress类;与URL有关的URL类,和URLConnection类;与网络通信有关的Socket类和ServerSocket类。协议是实现信息通信的重要手段,通俗的讲:就是不同对象之间沟通时遵循的原则和规则。TCP(传输
jingjing0907
·
2014-08-04 07:00
java
工作
socket
通信
学习
Java
网络编程学习笔记
(3)ServerSocket用法详解
ServerSocket用法详解ServerSocket负责接受客户端连接请求ServerSocket构造:ServerSocket() ServerSocket(intport)ServerSocket(intport,intbacklog)ServerSocket(intport,intbacklog,InetAddressbindAddr)port绑定的端口,backlog客户
joker_zhou
·
2014-07-17 16:00
java
编程
socket
网络
服务器
任务
Java
网络编程学习笔记
(2) socket用法
Socket用法详解构造Socket() 通过系统默认类型的SocketImpl创建未连接套接字Socket(InetAddressaddress,intport) 创建一个流套接字并将其连接到指定IP地址的指定端口号。Socket(InetAddresshost,intport,booleanstream) 已过时。UseDatagramSocke
joker_zhou
·
2014-07-17 16:00
java
编程
socket
网络
Stream
服务器
Java
网络编程学习笔记
(4)非阻塞通信
非阻塞通信对于ServerSoket及Socket编写的服务器程序和客户端程序,他们在运行过程中常会阻塞,例如:ServerSocket的accept方法和Socket得到的输入流的read方法都会在没有"数据"时阻塞.非阻塞通信有java.nio包的类实现的Java.nio中的主要类ServerSocketChannel:ServerSocket的替代类.SocketChannel:Socket
joker_zhou
·
2014-07-17 16:00
java
编程
网络
socket
服务器
远程连接
Java
网络编程学习笔记
(1)用java编写客户端/服务器程序(简易)
服务端(1)创建ServerSocketsert=newServerSocket(8000)//监听8000端口(2)使用accept方法监听端口,如果接受到一个连接请求,accept方法会返回一个Socket对象,在接受请求之前会一直阻塞.Socketsocket=sert.accept();(3)Socket提供了getInputStream()(4)使用BufferedReader装饰Inp
joker_zhou
·
2014-07-17 16:00
java
编程
网络
socket
服务器
linux
网络编程学习笔记
之三 -----多进程并发服务端
首先是fork()函数,移步APUE8.3.比较清晰的解释可以参考http://blog.csdn.net/lingdxuyan/article/details/4993883和http://www.oschina.net/question/195301_62902补充一点是:fork返回后,原进程中的每个文件或套接口描述符的引用计数加1(相当于被多打开了一次),每调用一次close,引用计数减1
simon_夏
·
2014-06-11 19:16
Linux种种
网络编程
linux
多进程
python
网络编程学习笔记
(10):webpy框架
django和webpy都是python的web开发框架。Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原则。webpy小巧,简单,实用,可
·
2014-06-09 22:12
python
网络编程学习笔记
(九):数据库客户端 DB-API
一、DB-API概述python支持很多不同的数据库。由于不同的卖家服务器导致和数据库通信的网络协议各有不同。在python的早期版本中,每一种数据库都带有自己的python模块,所有这些模块以不同的方式工作,并提供不同的函数。这种方法不便于编写能够在多种数据库服务器类型中运行的代码,于是DB-API库函数产生。在DB-API中,所有连接数据库的模块即便是底层网络协议不同,也会提供一个共同的接口。
·
2014-06-09 22:49
python
网络编程学习笔记
(八):XML生成与解析(DOM、ElementTree)
xml.dom篇DOM是DocumentObjectModel的简称,XML文档的高级树型表示。该模型并非只针对Python,而是一种普通XML模型。Python的DOM包是基于SAX构建的,并且包括在Python2.0的标准XML支持里。一、xml.dom的简单介绍1、主要方法:minidom.parse(filename):加载读取XML文件doc.documentElement:获取XML文
·
2014-06-09 22:55
python
网络编程学习笔记
(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
一、利用HTMLParser进行网页解析具体HTMLParser官方文档可参考http://docs.python.org/library/htmlparser.html#HTMLParser.HTMLParser1、从一个简单的解析例子开始例1:test1.html文件内容如下:复制代码代码如下:XHTML与HTML4.01标准没有太多的不同iloveyou下面是能够列出title和body的程
·
2014-06-09 22:16
python
网络编程学习笔记
(六):Web客户端访问
6.1最简单的爬虫网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。python的urllib\urllib2等模块很容易实现这一功能,下面的例子实现的是对baidu首页的下载。具体代码如下:复制代码代码如下:importurllib2page=urllib2.urlopen("http://www.baidu.com")printpage.read()6.2
·
2014-06-09 22:18
python
网络编程学习笔记
(五):socket的一些补充
1、半开放socket利用shutdown()函数使socket双向数据传输变为单向数据传输。shutdown()需要一个单独的参数,该参数表示了如何关闭socket。具体为:0表示禁止将来读;1表示禁止将来写;2表示禁止将来读和写。2、timeouts控制超时调用socket的settimeout()函数,向其传递参数,表明超时时间设置。当访问一个socket,如果经过了参数设定的时间后,什么都
·
2014-06-09 22:45
python
网络编程学习笔记
(四):域名系统
一、什么是域名系统DNS计算机域名系统(DNS)是由解析器以及域名服务器组成的。当我们在上网的时候,通常输入的是网址,其实这就是一个域名,而我们计算机网络上的计算机彼此之间只能用IP地址才能相互识别。再如,我们去一WEB服务器中请求一WEB页面,我们可以在浏览器中输入网址或者是相应的IP地址,例如我们要上新浪网,我们可以在IE的地址栏中输入网址,也可输入IP地址,但是这样子的IP地址我们记不住或说
·
2014-06-09 21:28
python
网络编程学习笔记
(三):socket网络服务器
1、TCP连接的建立方法客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较。步骤TCP客户端TCP服务器第一步建立socket对象建立socket对象第二步调用connect()建立一个和服务器的连接设置socket选项(可选)第三步无绑定到一个端口(也可以是一个指定的网卡)第四步无侦听连接下面具体来讲这四步的建立方法:第一步,建立socket对象:这里与客户端
·
2014-06-09 21:28
python
网络编程学习笔记
(二):socket建立网络客户端
1、建立socket建立socket对象需要搞清通信类型和协议家族。通信类型指明了用什么协议来传输数据。协议的例子包括IPv4、IPv6、IPX\SPX、AFP。对于internet通信,通信类型基本上都是AF_INET(和IPv4对应)。协议家族一般表示TCP通信的SOCK_STREAM或者表示UDP通信的SOCK_DGRAM。因此对于TCP通信,建立一个socket连接的语句为:s=socke
·
2014-06-09 21:13
python
网络编程学习笔记
(一)
学习用书:《python网络编程基础》作者JohnGoerzen第一部分底层网络学习Python提供了访问底层操作系统Socket接口的全部方法,需要的时候这些接口可以提供灵活而强有力的功能。(1)基本客户端操作在《python网络编程基础》一书中,作者列出了一个简单的Python客户端程序,具体如下:复制代码代码如下:importsocket,sysport=70host=sys.argv[1]
·
2014-06-09 21:13
java
网络编程学习笔记
java
网络编程学习笔记
C/S模式:客户端和服务器 客户端创建流程 11、建立Socket端点 2 3Sockets=newSocket(绑定地址,绑定端口); 2、确认源数据方式和创建输入流
Richard-Liu
·
2014-04-24 14:00
[置顶] WinSock
网络编程学习笔记
(九):基于UDP实现DayTime协议
在一个局域网中,许多系统都要求每台计算机能够保持时间的一致性,如WIN2000系统提供了与主域服务器时间同步的功能,即计算机登录到主域服务器,计算机系统的时间自动与主域服务器时间一致。那么又是如何使得主域服务器的时间同步世界标准时间的呢?如果能够使用GPS卫星时钟获得毫秒级别的标准时间,那会是很棒的一件事,前提了你付了钱!另一个不错的选择是,我们可以连接到Internet,利用Internet上的
huiguimoyu
·
2014-03-02 14:00
网络
互联网
计算机
UDP
局域网
WinSock
网络编程学习笔记
(八):测试bind程序
当我们使用socket创建一个套接口时,并没有为它分配地址,bind函数给套接口指定一个本机地址,Internet是IP和PORT的组合。函数bind既可以用于面向连接的socket也可以用于无连接的socket,它要在connect和listen之前调用。函数原型:intWSAAPIbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);成功返回
huiguimoyu
·
2014-03-01 11:00
编程
网络协议
服务器
网络编程
internet
WinSock
网络编程学习笔记
(七):协议查询程序(getprotobyname和getprotobynumber函数)
今天从书中学习了getprotobyname和getprotobyport函数。Internet中存在着很多的协议,每一个都有着自己的名字,如IP、TCP、UDP等等。但是当这些协议数据在网络上传输时,不是通过名字标识协议的,而是为每一种协议分配了一个编号,由IANA管理,每一个下层协议的首部都有一个字段用来指明它的数据是属于哪个上层协议的。名字是给人看的,编号是给机器看的。通过函数 getpro
huiguimoyu
·
2014-02-27 13:00
网络
tcp
网络编程
指针
结构
WinSock
网络编程学习笔记
(六):服务查询程序(getserverbyname和getserverbyport函数)
#include #include #include #pragmacomment(lib,"ws2_32") //概要:初步学习getservbyname和getservbyport函数的用法 /* 函数原型: 1.structserventFAR*WSAAPIgetservbyname(constcharFAR*name,constcharFAR*proto); 2.structserve
huiguimoyu
·
2014-02-26 13:00
网络编程
NetWork
WinSock
网络编程学习笔记
(五):查询主机信息
今天又学习了下winsock的知识,对知识做一下梳理。1. 域名系统简介:DomainNameSystem(DNS)其一个明显的作用是简化人们对IP的记忆方式,比如新浪的域名:www.sina.com,IP地址为“202,108,33,32”。这IP地址多难记啊。DNS空间是一个树形结构,树中的节点对应着一个资源集合,每个集合中包含一个或者多个资源记录,描述了与这个节点名字相关的信息,其他主机可以
huiguimoyu
·
2014-02-25 15:00
服务器
网络编程
NetWork
域名
应用程序
[置顶] WinSock
网络编程学习笔记
(四)网络转换函数的实现
WinSock提供了IP地址和点分十进制地址之间的转换函数,IP地址在网络模块中使用,点分十进制则是方便平常我们阅读而存在。今天初步认识了下两个转换函数:1.函数原型:unsignedlongWSAAPIinet_addr(constcharFAR*cp);返回值:成功返回一个32位二进制描述的网络字节序地址;如果传入的字符串不是合法地址,函数失败且返回INADDR_NONE,WinSock中定义
huiguimoyu
·
2014-02-24 17:00
数据结构
网络
二进制
网络编程
32位
python
网络编程学习笔记
(7):HTML和XHTML解析(HTMLParser、BeautifulSoup)
在python中能够进行html和xhtml的库有很多,如HTMLParser、sgmllib、htmllib、BeautifulSoup、mxTidy、uTidylib等,这里介绍一下HTMLParser、BeautifulSoup等模块。一、利用HTMLParser进行网页解析具体HTMLParser官方文档可参考http://docs.python.org/library/htmlparse
chodo
·
2013-12-12 12:46
python
网络编程
程序
import
title
python
网络编程学习笔记
(7):HTML和XHTML解析(HTMLParser、BeautifulSoup)
在python中能够进行html和xhtml的库有很多,如HTMLParser、sgmllib、htmllib、BeautifulSoup、mxTidy、uTidylib等,这里介绍一下HTMLParser、BeautifulSoup等模块。一、利用HTMLParser进行网页解析具体HTMLParser官方文档可参考http://docs.python.org/library/htmlparse
chodo
·
2013-12-12 12:46
程序
python
网络编程
Socket
网络编程学习笔记
Socket
网络编程学习笔记
一、IP地址操作类 1、IPAddress类 a、在该类中有一个 Parse()方法,可以把点分的十进制IP表示转化成IPAddress类,方法如下:
luyuncsd123
·
2013-10-30 22:00
[
网络编程学习笔记
]Web 概念:URI,URN和URL
A:URI(UniformResourceIdentifier)统一资源标识符定义:以特定语法来标识一个资源的字符串,绝对URI由模式和模式特有的部分组成scheme:scheme-specific-part模式特有部分的语法依赖于所使用的模式,模式包括:data,连接中包括的Base64编码的数组,RFC2397file,本地磁盘上的文件ftp,Ftp服务器http,超文本传输协议的服务器gop
xiaofanku
·
2013-09-29 00:00
java
Web
网络编程
NetWork
internet
java
网络编程学习笔记
之一(TCP/IP协议与UDP协议的区别和认识)
最近接了个网页游戏公司的Offer,所以开始系统的接触学习java网络编程这块,为了给自己备个案!就把自己的学习过程记录下来,以备以后参考!请大家多多指教。 1网络通讯的协议是开发网络程序的基础。目前最常用的协议是TCP/IP 协议和UDP 协议。而其他的如RMI,SOAP,FTP ,等协议都可以说是构建在这两者之上的。 2在网络协议的7层模型里,java主要关注的是在传输层 的应用,而对于底层的
Msmile_my
·
2013-06-04 02:00
java
网络
网络编程
UDP
tcpip
网络编程学习笔记
1.应用程序之间的传输(网络通讯三要素:IP,端口,协议) 1)找到IP 2)数据要发送到指定的应用程序上。为了标识这些程序,比如,QQ发到QQ,而不是发到MSN。为了标识这些应用程序,所以给这些网络应用程序用数字进行标识,这个数字叫做“端口”。逻辑端口。web服务是80,tomcat默认是8080,mysql:330
·
2013-05-05 23:00
网络编程
上一页
1
2
3
4
5
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他