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
linux网络编程
Linux网络编程
之套接字选项设置
1.介绍在
Linux网络编程
中,有时需要设置地址复用,允许发送广播包,将主机加入某个多播组,设置发送与接收缓冲区的大小,设置发送与接收的超时时间,将套接字绑定到某个接口上,发送TCP探测包查看客户端是否保持连接等
chenjin_zhong
·
2020-07-07 05:43
Linux
网络编程
Linux网络编程
之高级并发服务器
1.介绍在上一节,我们介绍了Linux简单的并发服务器,通过在服务器端建立多个子进程,来接收客户端的请求,实现并发处理,但这种方式明显有缺陷,服务器并不知道客户端请求的数量,所以事先建立的进程数不好确定。所以,这里介绍三种高级并发服务器模式。第一种是服务器端统一accept,接收客户端的到来,然后为每个客户端分配一个进程去处理.第二种是统一accept接收请求,然后为每个客户端分配一个线程去处理。
chenjin_zhong
·
2020-07-07 05:43
Linux
网络编程
Linux网络编程
常见面试题
概述TCP和UDP是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议。TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(streamsocket)的一种。UDP:用户数据报协议。UDP是一种无连接协议。UDP套接口是数据报套接口(datagramsocket)的一种。TCP与UDP简介基本TCP客户—服务器程序设计基本框架基本U
callinglove
·
2020-07-07 04:37
招聘试题
Linux网络编程
9 -- 简单总结Select改善多进程并发服务器
一、多进程处理方式在生成连接套接字的同时创建新的进程,用于处理该套接字的相应操作。原进程继续连接生成新的套接字,从而相互不影响,并发执行。pid_tpid;while(1){if((conn=accept(listenfd,(structsockaddr*)&peeraddr,&peerlen))maxi)maxi=i;break;}}if(i==FD_SETSIZE){fprintf(stder
Luck-U
·
2020-07-07 01:22
Linux网络编程
Linux网络编程
--tcp服务器
转载http://blog.csdn.net/lianghe_work/article/details/46468001一、做为TCP服务器需要具备的条件呢?1.具备一个可以确知的地址(bind()):相当于我们要明确知道移动客服的号码,才能给他们电话;2.让操作系统知道是一个服务器,而不是客户端(listen()):相当于移动的客服,他们主要的职责是被动接听用户电话,而不是主动打电话骚扰用户;3
ai___believe
·
2020-07-06 21:03
linux网络编程
之并发服务器的三种实现模型 (超级经典)
转载:http://blog.csdn.net/tennysonsky/article/details/45671215服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器,按处理方式来分有循环服务器和并发服务器。循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:·循
chen.yu
·
2020-07-06 18:33
Linux
网络编程
linux网络编程
:高并发服务器模型(二) Select
一、概述select用来阻塞监听4,5,6,7是否有数据传入,若7这个文件描述符有数据到达,select返回就绪文件描述符个数,若检测到7有数据接收,accept接收客户链接请求,创建一个新的文件描述符。select能监听的文件描述符个数受限于FD_SETSIZE,一般为1024,单纯改变进程打开的文件描述符个数并不能改变select监听文件个数解决1024以下客户端时使用select是很合适的,
Jags
·
2020-07-06 17:58
linux网络编程
Linux网络编程
(3):并发服务器程序设计
在介绍并发服务器程序设计的过程中,先介绍下服务器模型。在网络编程中来说都是许多客户端对应一个服务端,为了处理客户需求,对服务端的程序就提出了特殊的要求,日常常用的服务器模型有:1)循环服务器:服务器在同一时刻只能响应一个客户端要求2)并发服务器:服务器在同一时刻可以响应多个客户端的请求UDP循环服务器实现方法:UDP服务器每次从套接字上读一个客户端的请求->处理->然后将结果返回给客户端由于UDP
Nirvana_cry
·
2020-07-06 16:40
Linux
(四)
Linux网络编程
之多进程并发服务器、多线程并发服务器
一、多进程并发服务器1、只能处理单链接创建套接字-监听绑定监听-listen(fd,128)+++++++++++++++++接收连接请求通信使用多进程的方式,解决服务器处理多连续的问题:2、共享读时共享,写时复制。文件描述符内存映射区–mmap3、父进程的角色是什么?等待接受客户端连接–accept有链接:创建一个子进程fork()将通信的文件描述符关闭4、子进程的角色是什么?通信使用accep
CarmenIsOK
·
2020-07-06 15:58
Linux网络编程
linux网络编程
:并发服务器的模型
这篇博客主要是参考了http://renwen0524.blog.163.com/blog/static/7301945520116116016141/,这篇博客把
linux网络编程
的并发服务器的模型整理得很详细了
lxh_hust
·
2020-07-06 15:19
学习总结
【
Linux网络编程
】标准IO之写文件流
1、fwritesize_tfwrite(constvoid*restrictptr,size_tsize,size_tnitems,FILE*restrictstream);参数:constvoid*restrictptr:写入数据在内存空间存储的地址size_tsize:单个元素的大小size_tnitems:写入数据元素的个数FILE*restrictstream:指向写入文件的文件指针返回
container_off
·
2020-07-06 14:34
Linux
linux网络编程
总结(1)
网络编程就是通过网络协议实现计算机间的通信。那么就有两个问题,如何精准的定位主机和如何进行高效的数据传输。IP地址来标识网络中的主机,端口号用来定位主机中的某个进程。通过IP和端口号可以唯一确定网络的某台计算机中的进程。套接字即socket,用于描述IP地址和端口,是一个通信的句柄,进程利用套接字向网络发起请求或回复请求。套接字的工作原理要实现网络间的通信,至少需要一对套接字,一个运行于客户端,一
zhangz213
·
2020-07-06 12:57
Linux网络编程
--网络编程基本原理
1.网络模型与协议为了减少协议设计的复杂性,大多数网络模型都是按层的方式来组织的。在分层网络模型中,每一层都为上一层提供一定的服务,而把如何实现本层服务的细节对上一层加以屏蔽。上层只需知道下层提供了什么功能以及对这些功能的接口,而不必关心下一层如何实现这些功能。TCP/IP各层功能如下:[1].网络接口层网络接口层包括多种逻辑链路控制和媒体访问协议。它负责将网络层发送来的数据分成帧,并通过物理链路
闫钰晨
·
2020-07-06 11:18
Linux-C
【
LINUX网络编程
】网络协议基础
常见网络模型OSI七层模型OSI模型物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确
与光同程
·
2020-07-06 11:16
LINUX网络编程
Linux网络编程
TCP知识点总结(循环、并发服务器)
前言:互联网上每个接口必须有唯一的internet地址(ip地址),通过IP地址来识别主机上的网络接口,进而访问主机。IP地址分为ipv4和ipv6。许多应用程序都可以使用TCP或者UDP来传送数据,16位端口号来表示不同的应用程序。一、TCPTCP:传输控制协议,为应用程序提供可靠的通信连接,适用于一次传输大批数据的情况UDP:用户数据包协议,提供无连接通信,且不对传送包进行可靠的保证,适用于一
ytt999
·
2020-07-06 11:08
linux_C网络编程
Linux网络编程
之 UDP 组播
最近一直在做linux的网络,现在作个总结,陆续贴出来。在网上搜了很多资料,其中周立发的博客对我的学习参考作用最大,谢谢前辈。直接上代码吧,一个很简单udp组播通信的例子,分别为服务器端和客户端的代码。1、服务器端代码(multi_udp_server.c)#include#include#include#include#include#include#include#include#define
圆奋奋
·
2020-07-06 10:34
Linux编程
linux网络编程
——UDP局域网聊天室
程序功能:能够支持多个客户端运行,具有上线通知,群聊,下线通知,系统消息等功能程序如下:(1)、server.c#include#include#include#include#include#include#include#include#defineCLIENT_LOGIN100#defineCLIENT_CHAT200#defineCLIENT_QUIT300#defineSERVER_CH
yanghaoran321
·
2020-07-06 10:06
linux网络编程
Linux网络编程
之TCP/IP协议原理
1网络编程相关工具软件介绍1、使用telnet测试TCP服务器端;2、使用lsof;3、使用tcpdump;4、使用netstat;5、使用sniffer;6、使用wireshark(网络抓包工具);7、Chariot;8、SmartBit—硬件; 可重点关注一下网络抓包工具wireshark。2TCP/IP协议网络包 TCP/IP协议网络包主要分为:1、以太网头;2、IP头;3、TCP头;4
y_q_m
·
2020-07-06 10:13
Linux
嵌入式开发
Linux网络编程
(九) 非阻塞式I/O
套接字的默认状态是阻塞的。当发出一个不能立即完成的套接字调用时,其进程将被投入到睡眠,等待相应操作完成。可能阻塞的套接字调用可分为以下四类:(1)输入操作,包括read、readv、recv、recvfrom和recvmsg等5个函数对于非阻塞的套接字,如果输入操作不能被满足,相应的调用立即返回一个EWOULDBLOCK错误(2)输出操作,包括write、writev、send、sendto和se
ws四年
·
2020-07-06 07:25
Linux网络编程
——UDP服务器和广播/组播
学习笔记,小白可以相互学习,大佬看到能告诉咱理解不对的地方就好了。UDP服务器流程:1.socket2.bind3.具体操作(write/read/recvfrom/sebdto)UDP客户端流程:1.socket2.bind(可选)3.具体操作(write/read/recvfrom/sebdto)/******client.c**********************************
wp1027322856
·
2020-07-06 07:09
学习笔记
C
Linux
Linux网络编程
嵌入式
Linux网络编程
TCP:TransmissionControlProtocol传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transportlayer)通信协议。OSI协议参考模型,它是基于国际标准化组织(ISO)的建议发展起来的,从上到下共分为7层:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层TCP/IP参考模型:从上到下共分为4层:应用层、传输层、网络层、网络接口
程序员Android
·
2020-07-06 07:44
嵌入式linux
Linux网络编程
之简单TCP客户端服务器端实现
下面的代码有两个问题:server端code:#include#include#include#include#include#include#includeintmain(){intlistenfd=0;**if(listenfd=socket(AF_INET,SOCK_STREAM,0)==-1)**{perror("socketerror\n");exit(1);}printf("creat
Hi Man
·
2020-07-06 05:33
Linux网络编程
Linux网络编程
:I/O复用(更新ing...)
阻塞IO操作通常IO操作(比如read和write)都是阻塞I/O的,当调用read时,如果没有数据收到,线程或者进程就会被挂起,直到收到数据。1.IO多路复用内核驱动实现使用一个线程来检查I/O流(Socket)的就绪状态。通过记录跟踪每个I/O流(Socket)的状态,来同时管理多个I/O流。优点:开销低缺点:编程复杂度高1.1Select模式1.1.1结构体fd_set:描述符集合(long
大兵_xd
·
2020-07-06 03:23
Linux
网络编程
UNIX/
Linux网络编程
基础:应用层协议简介
目录1、HTTP协议2、FTP协议3、TELNET协议4、NFS协议1、HTTP协议应用层协议HTTP协议是Web的核心。HTTP协议在Web的客户程序和服务器程序中得以实现,运行在不同系统上的客户程序和服务器程序通过交换HTTP消息彼此通信。HTTP协议定义数据格式,使得服务器和客户端通过协议进行数据交流。客户端和服务器交流的基本内容:Web页面(webpage,也称为文档)。Web页面由多个对
weixin_34248118
·
2020-07-06 00:48
嵌入式
Linux网络编程
(一)——Socket网络编程基础
嵌入式
Linux网络编程
一——Socket网络编程基础一、Socket简介1、网络中进程间通信本机进程使用进程号区别不同的进程进程间通信方式有管道、信号、消息队列、共享内存、信号量等。
weixin_34185320
·
2020-07-06 00:09
Linux网络编程
-TCP/IP基本框架
TCP/IP层次架构网络能在不同的机器和操作系统之间通信需要依赖一些列的规范的协议,例如:ARP,RARP,TCP,UDP,IP,IGMP,ICMP。这些协议是在不同的层次进行开发和工作,每一层负责完成一定的通信功能,而且层与层之间有相关接口,这样组合成一个完整的网络传输系统下图是TCP/IP五层网络模型结合上图,网际的数据传输需要经过如下步骤:1应用程序把数据传输到应用程序的数据发送缓冲区,并设
weixin_33828101
·
2020-07-05 23:34
linux网络编程
之-----基础理论篇
1.学习
linux网络编程
首要掌握的基本概念系统资源是指CPU和内存等一些活动单元(除存储设备外)程序是指由编译好的二进制文件,存储在磁盘上,不占用系统资源进程由硬盘中的程序动迁起来,产生一个或多个进程调度并发
weixin_33769207
·
2020-07-05 22:09
Linux网络编程
(多人在线聊天系统)
一、首先是服务器的建立首先是一个信号终止程序,发信号ctrl+c终止程序,而是是初始化网络通信.创建一个描述符负责绑定服务器和监听服务器接收客户端的消息.socket()->sockaddr_in->bind->listen(准备就绪)开始接收客户端消息.start()函数首先是声明一个结构体用来存储客户端的消息,利用accept()函数来创建一个新的描述符来接收,这里有阻塞效果,也即是说连接的时
weixin_33692284
·
2020-07-05 22:34
linux网络编程
之system v信号量(一)
今天起,学习信号量相关的知识,下面开始:关于信号量,在前面已经介绍过了,这里回顾一下:通过上面的描述,很容易就能想到信号量的一上数据结构:下面再来回顾一下P、V原语:所谓的原语就是指这段代码是原子性的,是不会被其它信号中断的,在Linux中,systemv信号量是以信号量集来实现的,跟其它systemvIPC对象一样,也有自己的数据结构:同样的,信号量集也提供了一些函数来操作:下面一一对其进行学习
weixin_30914981
·
2020-07-05 22:39
Linux网络编程
入门 (转载)
(一)
Linux网络编程
--网络知识介绍
Linux网络编程
--网络知识介绍客户端和服务端网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端在网络程序中,如果一个程序主动和外面的程序通信
weixin_30707875
·
2020-07-05 21:22
Linux网络编程
综合运用之MiniFtp实现(五)
转眼兴奋的五一小长假就要到来了,在放假前夕还是需要保持一颗淡定的心,上次中已经对miniFTP有基础框架进行了搭建,这次继续进行往上加代码,这次主要还是将经历投射到handle_child()服务进程上来,其它的先不用关心:而它主要是完成FTP协议相关的功能,所以它的实现放在了ftpproto.c,目前连接成功之后效果是:其中"USERwebor2006"后面是包含"\r\n"的,FTP的协议规定
weixin_30348519
·
2020-07-05 20:22
linux网络编程
(7)基于多线程的TCP服务器与客户端编程
服务器端:#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include"msg.h"intsockfd;/*信号处理函数*/voidsig_handler(intsigno){if(signo==SIGINT){prin
洪流之源
·
2020-07-05 20:19
linux
c/c++
网络编程
Linux网络编程
socket错误分析
源地址:http://blog.csdn.net/uestc_huan/article/details/5863614
Linux网络编程
socket错误分析socket错误码:EINTR:4阻塞的操作被取消阻塞的调用打断
wangxiaoqin00007
·
2020-07-05 19:39
网络编程
linux那些事儿
网络粘包及Nagle算法(粘包,断包)
今天学到一个很有趣的算法,而且对windows和
linux网络编程
有了一个新的认识。
排山和倒海
·
2020-07-05 19:50
系统
linux网络编程
学习总结
linux网络编程
学习总结linux五种I/O模型阻塞I/O模型非阻塞I/O模型I/O多路复用模型select/pollepoll信号驱动I/O模型异步I/O模型I/O多路复用select/pollepoll
圣骐
·
2020-07-05 17:46
网络相关
linux网络编程
之用epoll实现io复用(基于tcp)
1、epoll介绍epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epollAPIepoll操作过程需要三个接口,分别如下:#includeintepoll
chen.yu
·
2020-07-05 16:04
Linux
网络编程
linux网络编程
之用多线程实现客户端到服务端的通信(基于udp)
1、开启一个线程接受数据,主线程发送数据的代码#include#include#include#include#include#include#include#include#include#include#include//接收线程,负责消息并且显示void*recv_thread(void*arg){intudp_fd=(int)arg;structsockaddr_inaddr;addr.s
chen.yu
·
2020-07-05 16:04
Linux
网络编程
linux网络编程
---心跳检测
对于SO_KEEPALIVE做心跳,我也知道,但是平时一般不用,第一是使用SO_KEEPALIVE你无法控制,它会每时每刻都发,但是使用心跳我们自己可以收到数据包的情况下不发,第二使用了SO_KEEPALIVE后,对于判断网络断开时间太长,对于需要及时响应的程序不太适应。大家一般都是使用业务层心跳来处理,主要是灵活可控。UNIX网络编程不推荐使用SO_KEEPALIVE来做心跳检测,还是在业务层以
gogiqp_jyh
·
2020-07-05 15:51
c++
linux网络编程
中阻塞和非阻塞socket的区别
新浪博客原文:http://blog.sina.com.cn/s/blog_4b029ef30100nxcb.html,略有修改,修改处标记为红色参考博客:http://blog.csdn.net/okiwilldoit/article/details/51015444读操作对于阻塞的socket,当socket的接收缓冲区中没有数据时,read调用会一直阻塞住,直到有数据到来才返回。当socke
Mr qqtang
·
2020-07-05 15:19
linux
Linux网络编程
学习——TCP/IP基础(一)
目录目录前言TCPIP基础ISOOSI参考模型TCPIP四层模型基本概念对等通信封装分用端口总结链接地址前言为了把全世界所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议族(InternetProtocolSuite)就是通用协议标准。Internet是由Inter和net两个单词组合起来的,愿意就是连接”网络”的网络,有了Internet,任何私有网
simonXi-tech
·
2020-07-05 12:18
网络编程
网络编程
Linux网络编程
---详解TCP的三次握手和四次挥手
我们知道,在TCP/IP协议中,TCP协议提供可靠的连接服务,是因为它有许多保证可靠连接的机制。可以分为3个方面:1.确认应答机制:指的是不管哪一端发送数据都需要确认回复一下。2.超时重传机制,发送后等待一段时间,不管是发送失败或者是还没有收到回复,那么就认为数据传输失败了;此时将会数据重传。这个超时是递增变化,但次数有限制,超过了重传次数就认为网络断开了。3.序号/确认序号:序号不一定从0开始,
shanghx_123
·
2020-07-05 11:16
Linux
Linux网络编程
Unix/
Linux网络编程
(2)——一个有趣的现象
第一节我们已经讲述了TCP的基本客户服务器模型,现在有这样一个问题:当客户端connect成功了,但是服务器在accept函数前阻塞了,会发生什么现象?将前面服务端代码修改一下,在accept函数之间使进程睡眠。客户端代码不用变动。/********头文件*********/#include#include#include#include#include#include#include/*****
oscarwin
·
2020-07-05 11:14
Linux网络编程
网络编程
linux
Linux网络编程
一步一步学 - 目录(汇总)
引言:非常好的关于
Linux网络编程
的文章,我也是无意中在别人的博客里发现的,在网上搜了一下,这类的文章总共还有很多篇,最后我找到了原作者的姓名-周立发,以及作者的博客空间。
robertzhouxh
·
2020-07-05 11:18
linux
网络
linux网络编程
API
1.socket函数用于创建一个socket,返回其句柄#include#includeintsocket(intdomin,inttype,intprotoclo)domin:AF_INET:使用TCP或者UDP来传输,用IPV4的地址AF_INET6:使用IPV6的地址AF_UNIX:本地协议,使用在linux和UNIX系统上,一般都是当客户端和服务器在统一台机器上的时候和斯用type:SOC
qq_39945321
·
2020-07-05 07:18
c++网络编程
linux网络编程
——ttcp
ttcp:测试网络吞吐量的性能测试工具关心的性能指标:1.带宽,MB/SNetcat测试时是一个上限,因此Netcat发的是什么而外的开销都没有,是纯的payload;其他的工具,因为消息要分包等等,会有一些overhead,测出来会小于Netcat测出来的带宽,如果测试出来比Netcat的要大,有一种情况是数据压缩了。出现这些情况需要与基本的117数据来做对比:如果测出来的数据小太多,而cpu使
替换法fj
·
2020-07-05 07:17
Linux
linux网络编程
——课程简介
Linux网络编程
学习(2)课程大纲1.TTCP:一个经典的TCP性能测试工具2.Round-trip:测试两台机器之间的时间差(udp)3.Netcat:测试网络的瑞士军刀4.Slowsink/surce
替换法fj
·
2020-07-05 07:46
Linux
服务器开发之
linux网络编程
---学习章节(一)
前言:近期学习了服务器相关的开发,平常主要撸c的程序,所以就下定决心研究了c的服务器开发,目的也在与巩固c的基本知识。详细分享如下,若有错误请指正,希望与大家探讨,共同学习进步。(服务器搭建的框架)一、关于http协议和xined服务1.HTTP协议大致解析(概念就不在抄袭了):请求服务器数据:(1)GET/文件或目录HTTP/1.1(2)协议头部分(可选)(3)\r\n(协议头结束)服务器应答浏
未知与希望
·
2020-07-05 07:24
服务端处理事件的两种模式--Reactor和Proactor
《Linux高性能服务器编程》阅读笔记: 服务端程序通常需要处理IO事件、信号(参考Linux系统上的信号和
Linux网络编程
的相关信号)、定时器事件(参考定时器实现超时发送/接收和定期检测非活动连接
mybright_
·
2020-07-05 04:49
Linux系统/网络编程
Linux编程
Linux网络编程
:自己动手写高性能HTTP服务器框架(三)
github:https://github.com/froghui/yolandabuffer对象buffer,顾名思义,就是一个缓冲区对象,缓存了从套接字接收来的数据以及需要发往套接字的数据。如果是从套接字接收来的数据,事件处理回调函数在不断地往buffer对象增加数据,同时,应用程序需要不断把buffer对象中的数据处理掉,这样,buffer对象才可以空出新的位置容纳更多的数据。如果是发往套接
囚牢-峰子
·
2020-07-05 03:43
Linux网络编程
Linux网络编程
- 子线程使用poll处理连接 I/O事件(高并发高性能进阶篇)
这一篇我们就将acceptor上的连接建立事件和已建立连接的I/O事件分离,形成所谓的主-从reactor模式。主-从reactor模式主-从这个模式的核心思想是,主反应堆线程只负责分发Acceptor连接建立,已连接套接字上的I/O事件交给sub-reactor负责分发。其中sub-reactor的数量,可以根据CPU的核数来灵活设置。多个反应堆线程同时在工作,这大大增强了I/O分发处理的效率,
囚牢-峰子
·
2020-07-05 03:12
Linux网络编程
上一页
13
14
15
16
17
18
19
20
下一页
按字母分类:
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
其他