List of usage examples for java.nio.channels SocketChannel read
public final long read(ByteBuffer[] dsts) throws IOException
From source file:reactor.io.net.http.PostAndGetTests.java
private void post(String path, String data, SocketAddress address) { try {//from w w w.ja va2s .c o m StringBuilder request = new StringBuilder().append(String.format("POST %s HTTP/1.1\r\n", path)) .append("Connection: Keep-Alive\r\n"); request.append(String.format("Content-Length: %s\r\n", data.length())).append("\r\n").append(data) .append("\r\n"); java.nio.channels.SocketChannel channel = java.nio.channels.SocketChannel.open(address); System.out.println(String.format("post: request >> [%s]", request.toString())); channel.write(Buffer.wrap(request.toString()).byteBuffer()); ByteBuffer buf = ByteBuffer.allocate(4 * 1024); while (channel.read(buf) > -1) ; String response = new String(buf.array()); System.out.println(String.format("post: << Response: %s", response)); channel.close(); } catch (IOException e) { e.printStackTrace(); } }
From source file:reactor.io.netty.http.PostAndGetTests.java
private void post(String path, String data, SocketAddress address) { try {// w w w .j a v a 2s. co m StringBuilder request = new StringBuilder().append(String.format("POST %s HTTP/1.1\r\n", path)) .append("Connection: Keep-Alive\r\n"); request.append(String.format("Content-Length: %s\r\n", data.length())).append("\r\n").append(data) .append("\r\n"); java.nio.channels.SocketChannel channel = java.nio.channels.SocketChannel.open(address); System.out.println(String.format("post: request >> [%s]", request.toString())); channel.write(ByteBuffer.wrap(request.toString().getBytes())); ByteBuffer buf = ByteBuffer.allocate(4 * 1024); while (channel.read(buf) > -1) ; String response = new String(buf.array()); System.out.println(String.format("post: << Response: %s", response)); channel.close(); } catch (IOException e) { e.printStackTrace(); } }
From source file:reactor.ipc.netty.http.client.PostAndGetTests.java
private void get(String path, SocketAddress address) { try {/*from w ww . j a v a 2s. co m*/ StringBuilder request = new StringBuilder().append(String.format("GET %s HTTP/1.1\r\n", path)) .append("Connection: Keep-Alive\r\n").append("\r\n"); java.nio.channels.SocketChannel channel = java.nio.channels.SocketChannel.open(address); System.out.println(String.format("get: request >> [%s]", request.toString())); channel.write(ByteBuffer.wrap(request.toString().getBytes())); ByteBuffer buf = ByteBuffer.allocate(4 * 1024); while (channel.read(buf) > -1) { } String response = new String(buf.array()); System.out.println(String.format("get: << Response: %s", response)); channel.close(); } catch (IOException e) { e.printStackTrace(); } }
From source file:reactor.ipc.netty.http.client.PostAndGetTests.java
private void post(String path, String data, SocketAddress address) { try {/* www .jav a 2 s.c o m*/ StringBuilder request = new StringBuilder().append(String.format("POST %s HTTP/1.1\r\n", path)) .append("Connection: Keep-Alive\r\n"); request.append(String.format("Content-Length: %s\r\n", data.length())).append("\r\n").append(data) .append("\r\n"); java.nio.channels.SocketChannel channel = java.nio.channels.SocketChannel.open(address); System.out.println(String.format("post: request >> [%s]", request.toString())); channel.write(ByteBuffer.wrap(request.toString().getBytes())); ByteBuffer buf = ByteBuffer.allocate(4 * 1024); while (channel.read(buf) > -1) { } String response = new String(buf.array()); Loggers.getLogger(PostAndGetTests.class).info("post: << " + "Response: %s", response); channel.close(); } catch (IOException e) { e.printStackTrace(); } }
From source file:eu.stratosphere.nephele.taskmanager.bytebuffered.OutgoingConnectionThread.java
private void doRead(SelectionKey key) { final SocketChannel socketChannel = (SocketChannel) key.channel(); final OutgoingConnection outgoingConnection = (OutgoingConnection) key.attachment(); final ByteBuffer buf = ByteBuffer.allocate(8); try {/*w ww. j a v a 2 s. c o m*/ if (socketChannel.read(buf) == -1) { outgoingConnection.reportTransmissionProblem(new IOException("Read unexpected EOF from channel")); } else { LOG.error("Outgoing connection read real data from channel"); } } catch (IOException ioe) { outgoingConnection.reportTransmissionProblem(ioe); } }
From source file:net.socket.nio.TimeClientHandle.java
private void handleInput(SelectionKey key) throws IOException { if (key.isValid()) { // ??/*ww w . j a va 2 s . c o m*/ SocketChannel sc = (SocketChannel) key.channel(); if (key.isConnectable()) { if (sc.finishConnect()) { sc.register(selector, SelectionKey.OP_READ); doWrite(sc); } else { System.exit(1);// } } if (key.isReadable()) { ByteBuffer readBuffer = ByteBuffer.allocate(1024); int readBytes = sc.read(readBuffer); if (readBytes > 0) { readBuffer.flip(); byte[] bytes = new byte[readBuffer.remaining()]; readBuffer.get(bytes); String body = new String(bytes, "UTF-8"); System.out.println("Now is : " + body); this.stop = true; } else if (readBytes < 0) { // key.cancel(); sc.close(); } else { ; // 0 } } } }
From source file:com.turn.ttorrent.client.ConnectionHandler.java
/** * Validate an expected handshake on a connection. * * <p>/*from w ww .j av a 2 s. com*/ * Reads an expected handshake message from the given connected socket, * parses it and validates that the torrent hash_info corresponds to the * torrent we're sharing, and that the peerId matches the peer ID we expect * to see coming from the remote peer. * </p> * * @param channel The connected socket channel to the remote peer. * @param peerId The peer ID we expect in the handshake. If <em>null</em>, * any peer ID is accepted (this is the case for incoming connections). * @return The validated handshake message object. */ private Handshake validateHandshake(SocketChannel channel, byte[] peerId) throws IOException, ParseException { ByteBuffer len = ByteBuffer.allocate(1); ByteBuffer data; // Read the handshake from the wire logger.trace("Reading handshake size (1 byte) from {}...", this.socketRepr(channel)); if (channel.read(len) < len.capacity()) { throw new IOException("Handshake size read underrrun"); } len.rewind(); int pstrlen = len.get(); data = ByteBuffer.allocate(Handshake.BASE_HANDSHAKE_LENGTH + pstrlen); data.put((byte) pstrlen); int expected = data.remaining(); int read = channel.read(data); if (read < expected) { throw new IOException("Handshake data read underrun (" + read + " < " + expected + " bytes)"); } // Parse and check the handshake data.rewind(); Handshake hs = Handshake.parse(data); if (!Arrays.equals(hs.getInfoHash(), this.torrent.getInfoHash())) { throw new ParseException("Handshake for unknow torrent " + Utils.bytesToHex(hs.getInfoHash()) + " from " + this.socketRepr(channel) + ".", pstrlen + 9); } if (peerId != null && !Arrays.equals(hs.getPeerId(), peerId)) { throw new ParseException("Announced peer ID " + Utils.bytesToHex(hs.getPeerId()) + " did not match expected peer ID " + Utils.bytesToHex(peerId) + ".", pstrlen + 29); } return hs; }
From source file:com.bittorrent.mpetazzoni.client.ConnectionHandler.java
/** * Validate an expected handshake on a connection. * * <p>/*from w w w . jav a 2 s . c o m*/ * Reads an expected handshake message from the given connected socket, * parses it and validates that the torrent hash_info corresponds to the * torrent we're sharing, and that the peerId matches the peer ID we expect * to see coming from the remote peer. * </p> * * @param channel The connected socket channel to the remote peer. * @param peerId The peer ID we expect in the handshake. If <em>null</em>, * any peer ID is accepted (this is the case for incoming connections). * @return The validated handshake message object. */ private Handshake validateHandshake(SocketChannel channel, byte[] peerId) throws IOException, ParseException { ByteBuffer len = ByteBuffer.allocate(1); ByteBuffer data; // Read the handshake from the wire logger.trace("Reading handshake size (1 byte) from {}...", this.socketRepr(channel)); if (channel.read(len) < len.capacity()) { throw new IOException("Handshake size read underrrun"); } len.rewind(); int pstrlen = len.get(); data = ByteBuffer.allocate(Handshake.BASE_HANDSHAKE_LENGTH + pstrlen); data.put((byte) pstrlen); int expected = data.remaining(); int read = channel.read(data); if (read < expected) { throw new IOException("Handshake data read underrun (" + read + " < " + expected + " bytes)"); } // Parse and check the handshake data.rewind(); Handshake hs = Handshake.parse(data); if (!Arrays.equals(hs.getInfoHash(), this.torrent.getInfoHash())) { throw new ParseException("Handshake for unknow torrent " + Torrent.byteArrayToHexString(hs.getInfoHash()) + " from " + this.socketRepr(channel) + ".", pstrlen + 9); } if (peerId != null && !Arrays.equals(hs.getPeerId(), peerId)) { throw new ParseException( "Announced peer ID " + Torrent.byteArrayToHexString(hs.getPeerId()) + " did not match expected peer ID " + Torrent.byteArrayToHexString(peerId) + ".", pstrlen + 29); } return hs; }
From source file:com.alexkli.jhb.Worker.java
@Override public void run() { try {/*w w w. j a v a 2 s.com*/ while (true) { long start = System.nanoTime(); QueueItem<HttpRequestBase> item = queue.take(); idleAvg.add(System.nanoTime() - start); if (item.isPoisonPill()) { return; } HttpRequestBase request = item.getRequest(); if ("java".equals(config.client)) { System.setProperty("http.keepAlive", "false"); item.sent(); try { HttpURLConnection http = (HttpURLConnection) new URL(request.getURI().toString()) .openConnection(); http.setConnectTimeout(5000); http.setReadTimeout(5000); int statusCode = http.getResponseCode(); consumeAndCloseStream(http.getInputStream()); if (statusCode == 200) { item.done(); } else { item.failed(); } } catch (IOException e) { System.err.println("Failed request: " + e.getMessage()); e.printStackTrace(); // System.exit(2); item.failed(); } } else if ("ahc".equals(config.client)) { try { item.sent(); try (CloseableHttpResponse response = httpClient.execute(request, context)) { int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == 200) { item.done(); } else { item.failed(); } } } catch (IOException e) { System.err.println("Failed request: " + e.getMessage()); item.failed(); } } else if ("fast".equals(config.client)) { try { URI uri = request.getURI(); item.sent(); InetAddress addr = InetAddress.getByName(uri.getHost()); Socket socket = new Socket(addr, uri.getPort()); PrintWriter out = new PrintWriter(socket.getOutputStream()); // BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // send an HTTP request to the web server out.println("GET / HTTP/1.1"); out.append("Host: ").append(uri.getHost()).append(":").println(uri.getPort()); out.println("Connection: Close"); out.println(); out.flush(); // read the response consumeAndCloseStream(socket.getInputStream()); // boolean loop = true; // StringBuilder sb = new StringBuilder(8096); // while (loop) { // if (in.ready()) { // int i = 0; // while (i != -1) { // i = in.read(); // sb.append((char) i); // } // loop = false; // } // } item.done(); socket.close(); } catch (IOException e) { e.printStackTrace(); item.failed(); } } else if ("nio".equals(config.client)) { URI uri = request.getURI(); item.sent(); String requestBody = "GET / HTTP/1.1\n" + "Host: " + uri.getHost() + ":" + uri.getPort() + "\n" + "Connection: Close\n\n"; try { InetSocketAddress addr = new InetSocketAddress(uri.getHost(), uri.getPort()); SocketChannel channel = SocketChannel.open(); channel.socket().setSoTimeout(5000); channel.connect(addr); ByteBuffer msg = ByteBuffer.wrap(requestBody.getBytes()); channel.write(msg); msg.clear(); ByteBuffer buf = ByteBuffer.allocate(1024); int count; while ((count = channel.read(buf)) != -1) { buf.flip(); byte[] bytes = new byte[count]; buf.get(bytes); buf.clear(); } channel.close(); item.done(); } catch (IOException e) { e.printStackTrace(); item.failed(); } } } } catch (InterruptedException e) { System.err.println("Worker thread [" + this.toString() + "] was interrupted: " + e.getMessage()); } }
From source file:Proxy.java
/** * Read all data from <code>from</code> and write it to <code>to</code>. * Returns false if channel was closed// w w w . j av a 2s . c o m */ boolean relay(SocketChannel from, SocketChannel to, ByteBuffer buf) throws Exception { int num; StringBuilder sb; buf.clear(); while (true) { num = from.read(buf); if (num < 0) return false; else if (num == 0) return true; buf.flip(); if (verbose) { log(printRelayedData(toString(from), toString(to), buf.remaining())); } if (debug) { sb = new StringBuilder(); sb.append(new String(buf.array()).trim()); sb.append('\n'); log(sb.toString()); } to.write(buf); buf.flip(); } }