游戏服务器到底是什么?这个问题一直不太好回答。是游戏业务处理?还是游戏的数据分享?还是其他。
估计每个做过游戏服务器的技术都会有自己的见解。
今天就一个java新手制作服务器的过程谁便聊聊。为什么使用java?因为我一直用java写服务器啊2333
既然开始做服务器,那首先就要联网啊。自己写socket,使用框架?我们今天以MINA开始吧。最简单的方式。虽然MINA已经好多年不更新了。
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class Server {
public static void main(String[] args) throws IOException {
NioSocketAcceptor acceptor = new NioSocketAcceptor();
//获得过滤器
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
//设置Io处理handler
acceptor.setHandler(new IoHandler());
//绑定7788端口
acceptor.bind(new InetSocketAddress(7788));
}
}
最简版的服务器启动,并未加入编解码器
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class IoHandler extends IoHandlerAdapter{
/**
* 收到网络消息
*/
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
super.messageReceived(session, message);
}
/**
* 网络关闭
*/
@Override
public void sessionClosed(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionClosed(session);
}
/**
* 网络创建
*/
@Override
public void sessionCreated(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionCreated(session);
}
/**
* 网络闲置
*/
@Override
public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
// TODO Auto-generated method stub
super.sessionIdle(session, status);
}
/**
* 网络开启
*/
@Override
public void sessionOpened(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionOpened(session);
}
}
最简版的