CoreJava第11章:ネットワークプログラミング


原文:http://blog.csdn.net/qjyong/archive/2009/09/15/4556527.aspx
author:qjyong
1.ポート番号:コンピュータを識別するあるネットワークプログラムで、TCPとUDPは同じポートを使用できます。
2.
転送プロトコル:
TCP:転送制御プロトコル:接続に向けて、データ転送が信頼でき、秩序化されている(データが完全で、効率が低い)。
(ServerSocketとソケット類)
UDP:ユーザーデータ報プロトコル:非接続に向けて、信頼できない、無秩序(完全性を保証しない、効率が高い、
一回で最大64 kb)
Datagram Socket、Datagram Packet、MullicastSocket。
アプリケーションプロトコル:HTTP,FTP,TELNET,SMTP。
3.InetAddress(IPまたはドメイン名の抽象)
InetAddres.getByName(「IP」);インスタンスを取得します
4.ソケットソケット
1)フロー式ソケット(TCP):IOストリームが伝送され、双方向
2)データグラム式ソケット(UDP):データグラム転送。
5.TCPプログラミング
a)ServerSocket:モニターポート、クライアント接続を受信する
ServerSocket(int port)
accept()//傍受し、クライアントソケットに戻ります(接続を受ける前にブロックされています)
close()
b)ソケットクライアントソケット
get InputStream()  InputStreamをオフにします。OutputStreamはソケットを閉じます。
closeはInputStreamをクローズします。OutputStream
6.upプログラミング
送信するデータの長さは、バイト配列・レングスで取得します。受信データのバッファは、UDP送信可能バイトの最大数として指定されるべきである(65536)。64 K
7.受け入れ者
ブロードキャスト(broadcast):ローカルネットワークのすべてのコンピュータに送信
マルチキャスト(Multicast):興味のあるコンピュータに送信します。指定のマルチキャストグループに参加します。
224.0.0.0-39.255.255.255
8.URL getConnationからurlのリモートオブジェクトに接続する
8.URLEncoderとURLDecoder類
HTML形式の符号化ツール類
‘a-zA-Z 0-9.***-’に対して以外の文字はエンコードします。(スペースは+に変換されます。)

//client
public class TCPClient {

	/**
	 * @param args
	 * @author likf
	 * @throws IOException
	 * @throws UnknownHostException
	 */
	public static void main(String[] args) throws UnknownHostException, IOException {
		try {
			System.out.println("start client...");
			Socket socket = new Socket("127.0.0.1", 4700);
			BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
			PrintWriter os = new PrintWriter(socket.getOutputStream());
			BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String readline;

			int i = 0;
			do {
				if (i > 0) {
					System.out.println();
					String getLine=is.readLine();
					System.out.println(i + "=========================");
					System.out.println("Server:" + getLine);
					System.out.println("=========================");
					System.out.print("reading:");
				}
				readline = sin.readLine();//read
				os.println(readline);
				os.flush();
				i++;
			} while (!readline.equals("bye!"));
			os.close();
			is.close();
			socket.close();
		} catch (Exception e) {
			System.out.println("Error" + e);
		}
	}

	public static void client() throws UnknownHostException, IOException {
		Socket client = new Socket("127.0.0.1", 6789);
		PrintWriter out = new PrintWriter(new OutputStreamWriter(client.getOutputStream()), true);
		out.println("             ");
		BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
		in.readLine(); //    。         。
		client.close();
	}
}

//server
public class TCP {
	public static void main(String[] args) throws IOException {
		try {
			int i=Integer.parseInt("1");//  int
			int ii=Integer.valueOf("11");//  int
			System.out.println("start server..");
			ServerSocket server = null;
			try {
				server = new ServerSocket(4700);
			} catch (Exception e) {
				System.out.println("can not listen to:" + e);
			}
			Socket socket = null;
			try {
				socket = server.accept();
				//  accept()        ,   
				//         Socket  ,     
			} catch (Exception e) {
				System.out.println("Error." + e);
			}
			String line;
			BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			PrintWriter os = new PrintWriter(socket.getOutputStream());
			BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
			do{
				String getLine=is.readLine();
				print(getLine);
				line=sin.readLine();
				os.println(line);
				os.flush();
			} while (!line.equals("bye")); 
			os.close(); 
			is.close(); 
			socket.close(); 
			server.close(); 
		} catch (Exception e) {
			System.out.println("Error:" + e);
		}
	}

	public static void print(String s){
		System.out.println();
		System.out.println("=========================");
		System.out.println("Client:" +s );
		System.out.println("=========================");
		System.out.print("reading:");
	}
	
	public static void server() throws IOException {
		ServerSocket server = new ServerSocket(6789);
		Socket client = server.accept(); //          ,   ,      
		BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
		in.readLine(); //    。         。
		PrintWriter out = new PrintWriter(new OutputStreamWriter(client.getOutputStream()), true);
		out.println("            ");
		client.close();
		server.close();
	}

}