mocket
Release for testing on android things
Lightweight, Typesafe, Reliable, Guaranty delivery, Ordered, High performant java nio sockets build
on top of udp.
如下圖:
< project >
...
< repositories >
...
< repository >
< id >jitpack.io</ id >
< url >https://jitpack.io</ url >
</ repository >
</ repositories >
</ project >
< dependencies >
...
< dependency >
< groupId >com.github.Nishant-Pathak</ groupId >
< artifactId >mocket</ artifactId >
< version >v1.0</ version >
</ dependency >
</ dependencies >
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
dependencies {
compile ' com.github.Nishant-Pathak:mocket:v1.0 '
}
搭建伺服器:
ServerBuilder < byte []> serverBuilder = new ServerBuilder < byte []>()
. port ( serverPort );
Server < byte []> server = serverBuilder . build ();
閱讀:
while ( true ) {
// blocking read
Pair < SocketAddress , byte []> readBytes = server . read ();
}
寫:
// write to server
server . write ( read . getSecond (), read . getFirst ());
寫簽名:
/**
* writed data to the given address
* @param data to send to addredd
* @param address of the client connected
* @throws IOException if error occurs while writing to the socket
* @throws InterruptedException if write is interrupted
*/
void write ( T data , SocketAddress address ) throws IOException , InterruptedException ;
建構客戶端:
ClientBuilder < byte []> builder = new ClientBuilder < byte []>()
. host ( "127.0.0.1" , 8080 );
Client < byte []> client = builder . build ();
閱讀:
// blocking read
byte [] data = client . read ();
寫:
client . write ( data );
寫簽名:
/**
* write object of type T on the wire
* it used @{@link com.network.mocket.handler.MocketStreamHandler} to parse the object
* @param data object to send on wire to the server.
* @throws IOException if error occurs while writing to the socket
* @throws InterruptedException if write is interrupted
*/
void write ( T data ) throws IOException , InterruptedException ;
實作java介面並將其新增至客戶端和伺服器建構器中
builder . addHandler ( new MyCustomHandler ())
public interface MocketStreamHandler < P > {
/**
* Used to encode object to byte stream
* @param in inout object of tye {P}
* @return byte array representing object
* @throws ParseException throws if fails to encode or decode
*/
byte [] encode ( P in ) throws ParseException ;
/**
* Used to decode bytestream to object
* @param out inout object of tye {P}
* @return byte array representing object
* @throws ParseException throws if fails to encode or decode
*/
P decode ( byte [] out ) throws ParseException ;
}
範例伺服器客戶端可以在此處找到範例。
*某些網關可能會阻止 UDP 流量。
我非常樂意以回饋、錯誤報告甚至更好的形式接受外部對專案的貢獻 - 拉取請求:)
如果您想提交拉取請求,請努力遵循 CONTRIBUTING.md 中的指南。
版權所有 (C) 2016 - 2017 尼尚特帕塔克
Licensed 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.