最近項目中想通過java來調用c來啟動驅動程序 ,由于項目是部署在winCE上(內存30多m),初步定下使用socket,所以就看了下輕量級的開源xSocket ,感覺用起來挺簡單,而且性能和效率不錯。apace mina 也很強大但是功好多功能用不上也就沒用。
xSocket是一個輕量級的基于nio(since jdk1.5)的服務器框架用于開發(fā)高性能、可擴展、多線程的服務器。該框架封裝了線程處理、異步讀/寫等方面。
使用也很簡單 :
server端:new Server(8090,new ServerDataHander()).start();
client端:new NonBlockingConnection("localhost", 8090,new ClientDataHander());
其中ServerDataHander,ClientDataHander為自己定義類,都可以實現(xiàn)接口IConnectExceptionHandler, IConnectHandler, IDisconnectHandler等接口:通過重寫回調函數(shù)來處理數(shù)據(jù):操作相當方便。例如:
public boolean onData(INonBlockingConnection connection)
throws IOException, BufferUnderflowException,
ClosedChannelException, MaxReadSizeExceededException {
byte[] data = connection.readBytesByLength(connection.available());

//hander
.
return true;
}

@Override
public boolean onConnectException(INonBlockingConnection connection,
IOException ioe) throws IOException {
chatServer.area.append("error connect please try again
\r\n");
return true;
}

@Override
public boolean onConnect(INonBlockingConnection connection)
throws IOException, BufferUnderflowException,
MaxReadSizeExceededException {
chatServer.area.append("client["+connection.getRemoteAddress()+"] is connected
\r\n");
return true;
}

@Override
public boolean onDisconnect(INonBlockingConnection connection)
throws IOException {
chatServer.area.append("client["+connection.getRemotePort()+"] is disconnected
\r\n");
return true;
}
下面是自己做的一個例子:
最終界面:
server端:

客戶端:

可運行代碼下載(解壓可用):
/Files/freeman1984/xsockettest.rar
xSocket是一個輕量級的基于nio(since jdk1.5)的服務器框架用于開發(fā)高性能、可擴展、多線程的服務器。該框架封裝了線程處理、異步讀/寫等方面。
使用也很簡單 :
server端:new Server(8090,new ServerDataHander()).start();
client端:new NonBlockingConnection("localhost", 8090,new ClientDataHander());
其中ServerDataHander,ClientDataHander為自己定義類,都可以實現(xiàn)接口IConnectExceptionHandler, IConnectHandler, IDisconnectHandler等接口:通過重寫回調函數(shù)來處理數(shù)據(jù):操作相當方便。例如:


































下面是自己做的一個例子:
最終界面:
server端:

客戶端:

可運行代碼下載(解壓可用):
/Files/freeman1984/xsockettest.rar