网络编程的概述
TCP/IP
传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是 Internet 最基本的协议、Internet 国际互联网络的基础,简
单地说,就是由网络层的 IP 协议和传输层的 TCP 协议组成的。
IP 地址:网络中每台计算机的一个标识号,本地 IP:127.0.0.1 localhost
端口号(POST):端口号的范围:0~65535 之间,0~1023 之间的端口数是用于一些知名的网络服务和应用
网络编程主要是指完成 C/S 程序的开发,程序的开发结构有两种:
· C/S(客户端/服务器),开发两套程序,两套程序需要同时维护,例如:QQ。CS 程序一般比较稳定
· B/S(浏览器/服务器),开发一套程序,客户端使用浏览器进行访问,例如:各个论坛。BS 程序一般稳定性较差,而且
安全性较差。
但是,C/S 的程序开发在实际的 Java 应用中毕竟很少了,而且整个 java 基本上都是以 B/S 为主。
C/S 程序主要可以完成以下两种程序的开发:
· TCP:(Transmission Control Protocol)传输控制协议,采用三方握手的方式,保证准确的连接操作。
· UDP:(User Datagram Protocol)数据报协议,发送数据报,例如:手机短信或者是 QQ 消息。
编写服务器端
编写服务器端需要使用 ServerSocket 类
方法名称 类型 描述
1 public ServerSocket(int port) throws IOException 构造 构造的时候传入监听的端口号
2 public Socket accept() throws IOException 普通 接收客户端的连接
在以上的操作中使用 accept()方法接收客户端的连接,每一个客户端对服务器来讲都是一个 Socket 对象。
方法名称 类型 描述
1
public Socket(String host,int port) throws
UnknownHostException, IOException
普通 指明要连接的服务器名称和端口号
2
public InputStream getInputStream() throws
IOException
普通 得到客户端的输入流
3
public OutputStream getOutputStream() throws
IOException
普通 得到客户端的输出流
在 Socket 类中可以进行 IO 操作,如果服务器现在想向客户端输出的话,则必须使用 getOutputStream()方法取得客户
端的输出流,如果客户端要是想接收服务器端输入的内容,则使用 getInputStream()方法得到。
ServerSocket server = new ServerSocket(9999); // 在9999端口监听
System.out.println("等待客户端连接。。。。。。。");
Socket client = server.accept();// 程序执行到此位置进行等待
// 得到客户端的输出流,准备输出
PrintStream out = new PrintStream(client.getOutputStream());
out.print("Hello World!!!");
out.close();
client.close();
server.close();
写完之后,运行此程序。服务器端在等待着客户端的连接。
那么使用 telnet 命令测试服务器端是否可以正常的使用。
· open localhost 9999
连接之后,服务器端停止执行,同时在 telnet 屏幕上显示了最终的内容。
网络编程中,进行开发的时候只管协议,而不管具体使用何种语言进行开发。
编写客户端
如果要想编写一个客户端,则可以使用 Socket 类完成,Socket 在实例化的时候要指定连接的主机和端口号。
Socket client = new Socket("localhost", 9999);
InputStream input = client.getInputStream();// 得到输入流
Scanner scan = new Scanner(input);
scan.useDelimiter("\n") ;
System.out.println(scan.next());
scan.close();
client.close();
input.close();