//解码buffer
private static Charset cs = Charset.forName("UTF-8");
//数据缓冲区
private static ByteBuffer sBuffer = ByteBuffer.allocate(1024);
private static ByteBuffer rBuffer = ByteBuffer.allocate(1024);
public static void main(String[] args) throws IOException {
//58.56.27.130:9354
InetSocketAddress socketAddress=new InetSocketAddress("58.56.27.130",9354);
SocketChannel channel=SocketChannel.open();
//如果本机有一个网卡(一个IP地址 可以创建多个端口 最多创建25535个端口)
channel.bind(new InetSocketAddress(10));
channel.connect(socketAddress);
channel.bind(new InetSocketAddress(20));
channel.connect(socketAddress);
//如果本机有多个网卡(多个IP地址)
//channel.bind(new InetSocketAddress("192.168.0.145",10));
//channel.connect(socketAddress);
//channel.bind(new InetSocketAddress("192.168.2.90",10));
//channel.connect(socketAddress);
int count =channel.read(rBuffer);
//读取数据
if (count > 0) {
rBuffer.flip();
System.out.println(String.valueOf(cs.decode(rBuffer).array()));
}
//发送数据
String repose="返回给客户端的信息";
sBuffer = ByteBuffer.allocate(repose.getBytes("UTF-8").length);
sBuffer.put(repose.getBytes("UTF-8"));
sBuffer.flip();
channel.write(sBuffer);
channel.close();
}
}