Title: 3.2 - IoService Details NavPrev: ch3.1-io-service.html NavPrevText: 3.1 - IoService Introduction NavUp: ch3-service.html NavUpText: Chapter 3 - Service NavNext: ch3.3-acceptor.html NavNextText: 3.3 - Acceptor Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. # 3.2 - IoService Details _IoService_ is an interface that is implemented by the two most important classes in **MINA** : * IoAcceptor * IoConnector In order to build a server, you need to select an implementation of the _IoAcceptor_ interface. For client applications, you need to implement an implementation of the _IoConnector_ interface. ## IoAcceptor Basically, this interface is named because of the _accept()_ method, responsible for the creation of new connections between a client and the server. The server accepts incoming connection requests. At some point, we could have named this interface 'Server' (and this is the new name in the coming **MINA 3.0**). As we may deal with more than one kind of transport (TCP/UDP/...), we have more than one implementation for this interface. It would be very unlikely that you need to implement a new one. We have many of those implementing classes * __NioSocketAcceptor__ : the non-blocking Socket transport _IoAcceptor_ * __NioDatagramAcceptor__ : the non-blocking UDP transport _IoAcceptor_ * __AprSocketAcceptor__ : the blocking Socket transport _IoAcceptor_, based on APR * __VmPipeSocketAcceptor__ : the in-VM _IoAcceptor_ Just pick the one that fit your need. Here is the class diagram for the _IoAcceptor_ interfaces and classes : ![](../../../staticresources/images/mina/IoServiceAcceptor.png) ## IoConnector As we have to use an _IoAcceptor_ for servers, you have to implement the _IoConnector_ for clients. Again, we have many implementation classes : * __NioSocketConnector__ : the non-blocking Socket transport _IoConnector_ * __NioDatagramConnector__ : the non-blocking UDP transport _IoConnector_ * __AprSocketConnector__ : the blocking Socket transport _IoConnector_, based on APR * __ProxyConnector__ : a _IoConnector_ providing proxy support * __SerialConnector__ : a _IoConnector_ for a serial transport * __VmPipeConnector__ : the in-VM _IoConnector_ Just pick the one that fit your need. Here is the class diagram for the _IoConnector_ interfaces and classes : ![](../../../staticresources/images/mina/IoServiceConnector.png)