Java Tutorial/Network/Socket Client
Содержание
Create a socket with a timeout
<source lang="java">
import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; public class Main {
public static void main(String[] argv) throws Exception { InetAddress addr = InetAddress.getByName("java.sun.ru"); int port = 80; SocketAddress sockaddr = new InetSocketAddress(addr, port); Socket sock = new Socket(); int timeoutMs = 2000; // 2 seconds sock.connect(sockaddr, timeoutMs); }
}</source>
Create a socket without a timeout
<source lang="java">
import java.net.InetAddress; import java.net.Socket; public class Main {
public static void main(String[] argv) throws Exception { InetAddress addr = InetAddress.getByName("java.sun.ru"); int port = 80; Socket socket = new Socket(addr, port); }
}</source>
Daytime Client
<source lang="java">
import java.io.IOException; import java.io.InputStream; import java.net.Socket; import java.net.UnknownHostException; public class MainClass {
public static void main(String[] args) { String hostname = "time.nist.gov"; try { Socket theSocket = new Socket(hostname, 13); InputStream timeStream = theSocket.getInputStream(); StringBuffer time = new StringBuffer(); int c; while ((c = timeStream.read()) != -1) time.append((char) c); String timeString = time.toString().trim(); System.out.println("It is " + timeString + " at " + hostname); } // end try catch (UnknownHostException ex) { System.err.println(ex); } catch (IOException ex) { System.err.println(ex); } }
}</source>
Day time Client (Getting the time)
<source lang="java">
import java.io.InputStream; import java.net.Socket; public class MainClass {
public static void main(String[] args)throws Exception { String hostname = "tock.usno.navy.mil"; Socket theSocket = new Socket(hostname, 13); InputStream timeStream = theSocket.getInputStream(); StringBuffer time = new StringBuffer(); int c; while ((c = timeStream.read()) != -1) time.append((char) c); String timeString = time.toString().trim(); System.out.println("It is " + timeString + " at " + hostname); }
}</source>
Echo Client
<source lang="java">
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class MainClass {
public static void main(String[] args) throws Exception { String hostname = "localhost"; Socket theSocket = new Socket(hostname, 7); BufferedReader networkIn = new BufferedReader(new InputStreamReader(theSocket.getInputStream())); BufferedReader userIn = new BufferedReader(new InputStreamReader(System.in)); PrintWriter out = new PrintWriter(theSocket.getOutputStream()); System.out.println("Connected to echo server"); while (true) { String theLine = userIn.readLine(); if (theLine.equals(".")) break; out.println(theLine); out.flush(); System.out.println(networkIn.readLine()); } networkIn.close(); out.close(); }
}</source>
Finger Client
<source lang="java">
import java.io.BufferedInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Writer; import java.net.Socket; public class MainClass {
public final static int DEFAULT_PORT = 79; public static void main(String[] args) throws Exception { String hostname = "localhost"; Socket connection = null; connection = new Socket(hostname, DEFAULT_PORT); Writer out = new OutputStreamWriter(connection.getOutputStream(), "8859_1"); out.write("\r\n"); out.flush(); InputStream raw = connection.getInputStream(); BufferedInputStream buffer = new BufferedInputStream(raw); InputStreamReader in = new InputStreamReader(buffer, "8859_1"); int c; while ((c = in.read()) != -1) { if ((c >= 32 && c < 127) || c == "\t" || c == "\r" || c == "\n") { System.out.write(c); } } connection.close(); }
}</source>
Read and write through socket
<source lang="java">
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class Main {
public static void whois(String query, String server) throws IOException { Socket sock = new Socket(server, 43); int c = 0; OutputStream os = sock.getOutputStream(); InputStream is = sock.getInputStream(); query += "\r\n"; os.write(query.getBytes("iso8859_1")); while (c != -1) { c = is.read(); if (c != -1) System.out.println((char) c); } } public static void main(String[] args) throws Exception { String hostname = "whois.networksolutions.ru"; whois("query", hostname); }
}</source>
Send string to each connected client
<source lang="java">
import java.net.ServerSocket; import java.net.Socket; class MTServerBase extends Thread {
Socket socket; public void run() { try { String s = "I"m a server."; socket.getOutputStream().write(s.getBytes()); socket.close(); } catch (Exception e) { System.out.println(e); } } static public void main(String args[]) throws Exception { ServerSocket ssock = new ServerSocket(8080); while (true) { Socket esock = null; esock = ssock.accept(); MTServerBase t = new MTServerBase(); t.socket = esock; t.start(); esock.close(); } }
}</source>
Time Client
<source lang="java">
import java.io.InputStream; import java.net.Socket; import java.util.Date; public class MainClass {
public static void main(String[] args) throws Exception { String hostname = "time.nist.gov"; int port = 37; InputStream raw = null; Socket theSocket = new Socket(hostname, port); raw = theSocket.getInputStream(); System.out.println(raw.read()); raw.close(); }
}</source>
Whois Client
<source lang="java">
import java.io.BufferedInputStream; import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.net.InetAddress; import java.net.Socket; public class MainClass {
public final static int DEFAULT_PORT = 43; public final static String DEFAULT_HOST = "whois.internic.net"; public static void main(String[] args) throws Exception { String serverName = System.getProperty("WHOIS_SERVER", DEFAULT_HOST); InetAddress server = null; server = InetAddress.getByName(serverName); Socket theSocket = new Socket(server, DEFAULT_PORT); Writer out = new OutputStreamWriter(theSocket.getOutputStream(), "8859_1"); out.write("\r\n"); out.flush(); InputStream raw = theSocket.getInputStream(); InputStream in = new BufferedInputStream(theSocket.getInputStream()); int c; while ((c = in.read()) != -1) System.out.write(c); }
}</source>
Zip socket
<source lang="java">
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; import java.net.Socket;
class ZipSocket extends Socket {
private InputStream in; private OutputStream out; public ZipSocket() { super(); } public ZipSocket(String host, int port) throws IOException { super(host, port); } public InputStream getInputStream() throws IOException { if (in == null) { in = new ZipInputStream(super.getInputStream()); } return in; } public OutputStream getOutputStream() throws IOException { if (out == null) { out = new ZipOutputStream(super.getOutputStream()); } return out; } public synchronized void close() throws IOException { OutputStream o = getOutputStream(); o.flush(); super.close(); }
}</source>