@Test
public void serverdemo() throws IOException {
ServerSocketChannel channel = ServerSocketChannel.open();
channel.socket().bind(new InetSocketAddress(8888));
SocketChannel c = null;
while(c == null){
c = channel.accept();//服务端监听端口
}
ByteBuffer buffer = ByteBuffer.allocate(50);
if(c!=null){
if(c.read(buffer)>0) {
System.out.println("接收" + buffer.array().toString());
}
}
}
//客户端代码 向127.0.0.1:8888发送socket连接
@Test
public void clientdemo() throws IOException {
SocketChannel c = SocketChannel.open(new InetSocketAddress("127.0.0.1",8888)); //绑定目标地址和端口
ByteBuffer buffer = ByteBuffer.allocate(1024);
buffer.put(new Date().toString().getBytes()); //缓冲区存入“当前时间”数据
buffer.flip();
c.write(buffer); //往channel写入数据
buffer.clear();
}
测试代码简单描述了一个客户端向服务端发送socket连接的场景。
服务端通过ServerSocketChannel监听得到的SocketChannel与客户端的SocketChannel内容,我们调试可以发现一模一样。当然,存储地址是不一样的,因为是”两台“电脑之间的网络IO。
就是这样,服务端可以得到客户端中SocketChannel相同的内容,材能获取客户端发送过来的数据。