kevinlee0755 发表于 2013-1-15 02:05:56

CoreJava 第11章:网络编程

原文:http://blog.csdn.net/qjyong/archive/2009/09/15/4556527.aspx
author:qjyong

1.端口号:标识计算机的某一网络程序,TCP和UDP可使用同一端口

2.
传输协议:
TCP:传输控制协议:面向连接,数据传输可靠,有序(数据完整,效率低).
(ServerSocket和Socket类)
UDP:用户数据报协议:面向非连接,不可靠,无序(不保证完整性,效率高,
一次最多64kb)
DatagramSocket,DatagramPacket,MulicastSocket.

应用协议:HTTP,FTP,TELNET,SMTP;

3.InetAddress(IP或域名抽象)
InetAddress.getByName("IP");//获得实例.

4.Socket套接字
1)流式套接字(TCP):IO流进行传输,双向
2)数据报式套接字(UDP):数据报传输.

5.TCP编程
a)ServerSocket:监听端口,接收客户端连接
ServerSocket(int port);
accept() //监听,接收,返回客户端套接字(接收到连接前一直阻塞)
close()
b)Socket 客户端套接字
getInputStream()关闭InputStream,OutputStream将关闭套接字
close 将关闭InputStream,OutputStream

6.udp编程
要发送的数据长度用字节数组.length来获取。接收数据的缓冲区应该指定为UDP可发送的字节最大数(65536)。64K

7.多接受者
广播(broadcast):发送给本地网络所有计算机
多播(Multicast):发送给感兴趣的计算机.加入指定的多播组
224.0.0.0-239.255.255.255

8.URL getConnetion 到url的远程对象连接

8. URLEncoder和URLDecoder类
HTML格式的编码工具类
对‘a-zA-Z0-9.*_-’之外的字符都会进行编码。(空格会转换成+)

//clientpublic 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();//reados.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();}}//serverpublic class TCP {public static void main(String[] args) throws IOException {try {int i=Integer.parseInt("1");//获取intint ii=Integer.valueOf("11");//获取intSystem.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();}}
页: [1]
查看完整版本: CoreJava 第11章:网络编程