`

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.*_-’之外的字符都会进行编码。(空格会转换成+)

//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();
	}

}

分享到:
评论

相关推荐

    Core Java Volume I--Fundamental (11th Edition)

    4. 出版信息:本书《Core Java Volume I--Fundamental (11th Edition)》由Cay S. Horstmann所著,并由Pearson Education出版。该书的出版地包括波士顿、哥伦布、纽约、旧金山、阿姆斯特丹、开普敦、迪拜、伦敦、...

    Core Java

    掌握这些基础概念和规则是学习Core Java的起点,随着深入学习,还将涉及异常处理、输入/输出、集合框架、多线程、网络编程等更多内容。对于初学者来说,理解并熟练运用这些知识是成为Java程序员的第一步。

    core java 第十版

    《核心Java 第十版》是Java编程领域的一本经典教材,由Cay S. Horstmann和Gary Cornell合著,全面介绍了Java编程的基础知识和技术。这本书主要分为两卷,卷I主要关注基础知识,包括Java语言的核心特性、面向对象编程...

    Core Java 第11版 英文版 第一卷+第二卷

    《Core Java 第11版》是Java编程领域中极具权威性的教材,分为第一卷和第二卷,涵盖了Java 11的最新特性。这套教材以其深入浅出的讲解和丰富的实例,被誉为最经典的Java教程之一。 第一卷《Core Java Volume I - ...

    corejava课件

    第十一章:枚举与注解 本章继续深入探讨Java枚举类型及其用法,以及注解在代码组织和元编程中的作用。 第十二章:Lambda表达式与函数式编程 Java 8引入了Lambda表达式,使得函数式编程成为可能。本章将讲解Lambda的...

    core Java 11 Edition Java核心技术 卷一卷二

    这套书籍深入讲解了Java 11版本的关键概念和技术,旨在帮助读者全面掌握Java编程。 卷一主要关注基础知识,包括: 1. **Java语言基础**:讲解了Java的基本语法,如变量、数据类型、运算符、控制结构(如if语句和...

    Java核心技术 配套源码7-8-9-10

    第二卷则深入到高级主题,如多线程、网络编程、I/O流、数据库访问以及JavaFX图形界面开发等。 在提供的压缩包文件中,我们看到了四个版本的随书源码,分别是`corejava9.zip`、`corejava8.zip`、`corejava.zip`和`...

    core java 第九版 英文

    《Core Java 第九版》是Java编程领域的一本经典教材,尤其适合初学者入门。这本书深入浅出地讲解了Java语言的基础知识和高级特性,帮助读者掌握Java编程的核心概念和技术。 1. **Java语言基础**:书中首先介绍了...

    core java 1第十版英文版 java核心技术第十版英文版

    《Core Java 1 第十版》是Java编程领域的一本经典教材,专注于Java核心技术的讲解。这本书详尽地涵盖了Java语言的基础以及高级特性,对于学习和掌握Java编程有着极高的价值。以下是根据书名和描述提炼出的一些核心...

    Core Java( Java 核心) PDF 教材

    《Core Java》是由Sun Microsystems公司出版的一本权威的Java编程教材,它全面深入地介绍了Java语言的核心概念和技术。这本书是Java开发者的重要参考资料,对于初学者和有经验的开发者都具有很高的学习价值。以下是...

    Core Java 8th Vol I

    11. **第11章:图形用户界面编程** - Swing组件库介绍 - AWT与Swing的比较 12. **第12章:网络编程** - Socket编程模型 - HTTP协议及其实现方式 13. **第13章:数据库访问** - JDBC API介绍 - 数据库连接...

    corejava.rar

    《核心Java》是Java编程领域的经典著作,第十版的发布为学习者提供了全面且深入的Java知识体系。这个"corejava.rar"压缩包文件包含了该书籍的源代码,供读者在学习过程中实践和理解书中所讲解的概念。以下是基于Java...

    Core Java. 8th java核心技术第八版英文

    《Core Java 8th Edition》是Java开发领域的一部经典著作,主要针对的是Java 8这一版本。这本书详细阐述了Java编程语言的核心概念和技术,对于任何想要深入理解Java的开发者来说,都是一份不可多得的参考资料。以下...

    core java I (java核心编程)学习笔记

    本笔记基于第5版第一部分(I)进行整理,旨在帮助读者深入理解和掌握Java编程的基础知识。 1. **Java环境搭建**:首先,我们需要安装Java Development Kit (JDK),设置好环境变量,包括JAVA_HOME、PATH和CLASSPATH...

    core java 课件 oracle 公司制作

    第十一章:枚举与注解 枚举类型提供了一种安全的方式来表示有限的固定值,而注解可以用于提供编译器或运行时的元数据。本章将结合实例来学习这两者。 第十二章:集合框架的高级特性 深入探讨集合框架的高级特性,如...

    corejava9-10-11.zip

    此压缩包"corejava9-10-11.zip"包含了该书第9版、第10版以及第11版的程序清单,这将为学习者提供一个实践和理解书中理论的宝贵平台。 在Java核心技术的第9版中,作者们详细讲解了Java的基础知识,包括类、对象、...

    core java 卷1 pdf

    《Core Java卷1》是Java编程初学者的重要参考资料,它由Cay S. Horstmann和Gary Cornell合著,被誉为Java编程的经典教材。第八版在原有的基础上进行了更新,以适应现代Java开发环境的变化,提供了全面且深入的Java...

    Core Java Vol I 8th

    《Core Java Vol I 8th》是Java编程领域的一本经典教材,主要针对初学者和有一定基础的开发者,深入浅出地介绍了Java编程的核心概念和技术。这本书由Cay S. Horstmann和Gary Cornell合著,是Java学习者的重要参考...

Global site tag (gtag.js) - Google Analytics