原文: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();
}
}
分享到:
相关推荐
4. 出版信息:本书《Core Java Volume I--Fundamental (11th Edition)》由Cay S. Horstmann所著,并由Pearson Education出版。该书的出版地包括波士顿、哥伦布、纽约、旧金山、阿姆斯特丹、开普敦、迪拜、伦敦、...
掌握这些基础概念和规则是学习Core Java的起点,随着深入学习,还将涉及异常处理、输入/输出、集合框架、多线程、网络编程等更多内容。对于初学者来说,理解并熟练运用这些知识是成为Java程序员的第一步。
《核心Java 第十版》是Java编程领域的一本经典教材,由Cay S. Horstmann和Gary Cornell合著,全面介绍了Java编程的基础知识和技术。这本书主要分为两卷,卷I主要关注基础知识,包括Java语言的核心特性、面向对象编程...
《Core Java 第11版》是Java编程领域中极具权威性的教材,分为第一卷和第二卷,涵盖了Java 11的最新特性。这套教材以其深入浅出的讲解和丰富的实例,被誉为最经典的Java教程之一。 第一卷《Core Java Volume I - ...
第十一章:枚举与注解 本章继续深入探讨Java枚举类型及其用法,以及注解在代码组织和元编程中的作用。 第十二章:Lambda表达式与函数式编程 Java 8引入了Lambda表达式,使得函数式编程成为可能。本章将讲解Lambda的...
这套书籍深入讲解了Java 11版本的关键概念和技术,旨在帮助读者全面掌握Java编程。 卷一主要关注基础知识,包括: 1. **Java语言基础**:讲解了Java的基本语法,如变量、数据类型、运算符、控制结构(如if语句和...
第二卷则深入到高级主题,如多线程、网络编程、I/O流、数据库访问以及JavaFX图形界面开发等。 在提供的压缩包文件中,我们看到了四个版本的随书源码,分别是`corejava9.zip`、`corejava8.zip`、`corejava.zip`和`...
《Core Java 第九版》是Java编程领域的一本经典教材,尤其适合初学者入门。这本书深入浅出地讲解了Java语言的基础知识和高级特性,帮助读者掌握Java编程的核心概念和技术。 1. **Java语言基础**:书中首先介绍了...
《Core Java 1 第十版》是Java编程领域的一本经典教材,专注于Java核心技术的讲解。这本书详尽地涵盖了Java语言的基础以及高级特性,对于学习和掌握Java编程有着极高的价值。以下是根据书名和描述提炼出的一些核心...
《Core Java》是由Sun Microsystems公司出版的一本权威的Java编程教材,它全面深入地介绍了Java语言的核心概念和技术。这本书是Java开发者的重要参考资料,对于初学者和有经验的开发者都具有很高的学习价值。以下是...
11. **第11章:图形用户界面编程** - Swing组件库介绍 - AWT与Swing的比较 12. **第12章:网络编程** - Socket编程模型 - HTTP协议及其实现方式 13. **第13章:数据库访问** - JDBC API介绍 - 数据库连接...
《核心Java》是Java编程领域的经典著作,第十版的发布为学习者提供了全面且深入的Java知识体系。这个"corejava.rar"压缩包文件包含了该书籍的源代码,供读者在学习过程中实践和理解书中所讲解的概念。以下是基于Java...
《Core Java 8th Edition》是Java开发领域的一部经典著作,主要针对的是Java 8这一版本。这本书详细阐述了Java编程语言的核心概念和技术,对于任何想要深入理解Java的开发者来说,都是一份不可多得的参考资料。以下...
本笔记基于第5版第一部分(I)进行整理,旨在帮助读者深入理解和掌握Java编程的基础知识。 1. **Java环境搭建**:首先,我们需要安装Java Development Kit (JDK),设置好环境变量,包括JAVA_HOME、PATH和CLASSPATH...
第十一章:枚举与注解 枚举类型提供了一种安全的方式来表示有限的固定值,而注解可以用于提供编译器或运行时的元数据。本章将结合实例来学习这两者。 第十二章:集合框架的高级特性 深入探讨集合框架的高级特性,如...
此压缩包"corejava9-10-11.zip"包含了该书第9版、第10版以及第11版的程序清单,这将为学习者提供一个实践和理解书中理论的宝贵平台。 在Java核心技术的第9版中,作者们详细讲解了Java的基础知识,包括类、对象、...
《Core Java卷1》是Java编程初学者的重要参考资料,它由Cay S. Horstmann和Gary Cornell合著,被誉为Java编程的经典教材。第八版在原有的基础上进行了更新,以适应现代Java开发环境的变化,提供了全面且深入的Java...
《Core Java Vol I 8th》是Java编程领域的一本经典教材,主要针对初学者和有一定基础的开发者,深入浅出地介绍了Java编程的核心概念和技术。这本书由Cay S. Horstmann和Gary Cornell合著,是Java学习者的重要参考...