53
Java 语语语语语语 12 12 语 语语语语 语 语语语语

Java 语言编程技术

  • Upload
    halle

  • View
    128

  • Download
    2

Embed Size (px)

DESCRIPTION

Java 语言编程技术. 第12章 网络编程. 主要内容. 使用 URL TCP 编程 UDP 编程. Java 提供的网络功能有三大类 : URL, Socket, Datagram. URL 是三大功能中最高级的一种 , 通过 URL Java 程序可以直接送出或读入网络上的数据 . Socket 是传统网络程序最常用的方式 , 可以想象为两个不同的程序通过网络的通信信道 . Datagram 是更低级的网络传输方式 , 它把数据的目的纪录在数据包中 , 然后直接放在网络上. 网络环境中的 java. 借助 HTML 从网上下载 applet. - PowerPoint PPT Presentation

Citation preview

Page 1: Java  语言编程技术

Java 语言编程技术第第 1212 章 网络编程章 网络编程

Page 2: Java  语言编程技术

Java 语言编程技术 2

主要内容 使用使用 URLURL TCPTCP 编程编程 UDPUDP 编程编程

Page 3: Java  语言编程技术

Java 语言编程技术 3

JavaJava 提供的网络功能有三大类提供的网络功能有三大类 : URL, : URL, Socket, Datagram.Socket, Datagram.

URLURL 是三大功能中最高级的一种是三大功能中最高级的一种 ,, 通过通过URL JavaURL Java 程序可以直接送出或读入网络程序可以直接送出或读入网络上的数据上的数据 ..

SocketSocket 是传统网络程序最常用的方式是传统网络程序最常用的方式 ,, 可可以想象为两个不同的程序通过网络的通以想象为两个不同的程序通过网络的通信信道信信道 .. DatagramDatagram 是更低级的网络传输方式是更低级的网络传输方式 ,, 它它把数据的目的纪录在数据包中把数据的目的纪录在数据包中 ,, 然后直接然后直接放在网络上放在网络上 ..

Page 4: Java  语言编程技术

Java 语言编程技术 4

网络环境中的 java

借助 HTML从网上下载 applet

在程序中通过 URL访问网上资源通过 java.net包中的类直接在程序中实现网络通讯

Page 5: Java  语言编程技术

Java 语言编程技术 5

URL 统一资源定位符统一资源定位符 URLURL (( Uniform Resource Uniform Resource

LocatorLocator ))用字符串表示用字符串表示 InternetInternet 网络上资源的地址网络上资源的地址包括两部分包括两部分

使用的协议(使用的协议( http, ftp, gopher, file…)http, ftp, gopher, file…)资源位置资源位置

Page 6: Java  语言编程技术

Java 语言编程技术 6

URL (续) 资源位置资源位置

主机名,或主机名,或 IPIP 地址地址端口号端口号路径名,资源文件在主机中的路径路径名,资源文件在主机中的路径引用,指向资源文件的某一个位置引用,指向资源文件的某一个位置

httphttp://://www.sun.comwww.sun.com::88888888//dirdir//file.htmfile.htm##locloc

Page 7: Java  语言编程技术

Java 语言编程技术 7

URL 类 java.net.URL java.net.URL

一个一个 URLURL 对象代表一个对象代表一个 URLURL 资源资源 构造函数构造函数

URL(String spec) URL(String spec) URL url1=new URL(“http://www.nankai.edu.cn/”);URL url1=new URL(“http://www.nankai.edu.cn/”);

URL(URL baseURL, String URL(URL baseURL, String relativeURL)relativeURL)

URL url2=new URL(url1, “file.html”);URL url2=new URL(url1, “file.html”);

Page 8: Java  语言编程技术

Java 语言编程技术 8

URL 类(续) URL(String protocol, String host, int URL(String protocol, String host, int

port, String file)port, String file) URL(String protocol, String host, String URL(String protocol, String host, String

file)file) 使用缺省使用缺省 8080 端口端口构造函数抛出构造函数抛出 MalformedURLExceptionMalformedURLException

获取获取 URLURL 信息的一些方法信息的一些方法 getProtocol(), getHost(), getPort(), getFile(), getProtocol(), getHost(), getPort(), getFile(),

getRef()getRef()

Page 9: Java  语言编程技术

Java 语言编程技术 9

利用 URL 获取网络资源 创建创建 URLURL 对象对象 使用使用 URLURL 对象的对象的 openStream()openStream() 方法,返方法,返回一个回一个 InputStreamInputStream 。。 从此从此 InputStreamInputStream 读入即可。读入即可。

Page 10: Java  语言编程技术

Java 语言编程技术 10

利用 URL 获取网络资源(续)import java.net.*;import java.io.*;

public class TestUrl { public static void main(String[] args) throws Exception { URL web = new URL("http://www.nankai.edu.cn"); System.out.println(web.getProtocol()); System.out.println(web.getHost()); System.out.println(web.getPort()); System.out.println(web.getFile());

Page 11: Java  语言编程技术

Java 语言编程技术 11

利用 URL 获取网络资源(续) BufferedReader in = new BufferedReader( new InputStreamReader(web.openStream())); String inputLine; while ((inputLine = in.readLine()) != null)

System.out.println(inputLine); in.close(); }}

Page 12: Java  语言编程技术

Java 语言编程技术 12

URLConnection 一个一个 URLConnectionURLConnection 对象代表一个对象代表一个 URLURL资源与资源与 JavaJava 程序的通讯连接,可以通过程序的通讯连接,可以通过它向这个它向这个 URLURL 连接读或写。连接读或写。 获得获得 URLConnectionURLConnection 类对象 —— 使用类对象 —— 使用

URLURL 的的 openConnectionopenConnection 方法:方法: URLConnection url1. openConnection()

成功,返回一个 URLConnection 对象不成功,抛出 IOException 例外

Page 13: Java  语言编程技术

Java 语言编程技术 13

URLConnection (续) 从从 URLConnectionURLConnection 读读

getInputStream( )getInputStream( ) 向向 URLConnectionURLConnection 写写

setDoOutput(true), getOutputStream( )setDoOutput(true), getOutputStream( )

Page 14: Java  语言编程技术

Java 语言编程技术 14

import java.io.*;import java.io.*;import java.net.*;import java.net.*;public class Reverse {public class Reverse { public static void main(String[] args) throws public static void main(String[] args) throws Exception {Exception {

if (args.length != 1) {if (args.length != 1) {System.err.println("Usage: java Reverse System.err.println("Usage: java Reverse

string_to_reverse");string_to_reverse");System.exit(1);System.exit(1); }}

String stringToReverse=args[0];String stringToReverse=args[0];

URLConnection (续)

Page 15: Java  语言编程技术

Java 语言编程技术 15

URL url = new URL(URL url = new URL( "http://java.sun.com/cgi-bin/backwards");"http://java.sun.com/cgi-bin/backwards");

URLConnection connection = url.URLConnection connection = url.openConnectionopenConnection();(); connection.setDoOutput(true);connection.setDoOutput(true);

PrintWriter to_cgi = newPrintWriter to_cgi = new PrintWriter(connectionPrintWriter(connection.getOutputStream.getOutputStream());()); to_cgi.println("string=" + stringToReverse); to_cgi.println("string=" + stringToReverse);

to_cgi.close();to_cgi.close();

URLConnection (续)

Page 16: Java  语言编程技术

Java 语言编程技术 16

BufferedReader from_cgi = new BufferedReader( BufferedReader from_cgi = new BufferedReader( new InputStreamReader(new InputStreamReader( connection.getInputStream())); connection.getInputStream()));

String inputLine;String inputLine;while ((inputLine = from_cgi.readLine()) != null) while ((inputLine = from_cgi.readLine()) != null) System.out.println(inputLine);System.out.println(inputLine); from_cgi.close(); from_cgi.close();

}}}}

URLConnection (续)

Page 17: Java  语言编程技术

Java 语言编程技术 17

运行结果运行结果

URLConnection (续)abcdefg

reversed is:

gfedcba

Page 18: Java  语言编程技术

Java 语言编程技术 18

TCP 与 UDP TCP(Transport Control Protocol)TCP(Transport Control Protocol)

两主机之间有连接的、可靠的、端对两主机之间有连接的、可靠的、端对端端 ((end-to-endend-to-end)) 的数据流的传输的数据流的传输 如如 http, ftp, telnet http, ftp, telnet 的传输层均使用此协的传输层均使用此协议议

UDP(User Datagram Protocol)UDP(User Datagram Protocol)从一台机器向另一台机器以无连接的、从一台机器向另一台机器以无连接的、数据报的方式进行通讯的协议数据报的方式进行通讯的协议

Page 19: Java  语言编程技术

Java 语言编程技术 19

TCP 与 Socket 有连接的服务中,服务器进程绑定有连接的服务中,服务器进程绑定一个一个 SocketSocket ,,监听客户请求监听客户请求 请求请求 服务进程服务进程响应请求响应请求 服务进程与客户进程各绑定一个服务进程与客户进程各绑定一个

SocketSocket ,,进行相互通讯。进行相互通讯。

Page 20: Java  语言编程技术

Java 语言编程技术 20

UDP 与 Datagrams 使用使用 UDPUDP 协议传送数据时,把数据分协议传送数据时,把数据分割为各自独立的多个数据报割为各自独立的多个数据报

((Datagrams), Datagrams), 分别发送,数据报是否到分别发送,数据报是否到达、到达顺序以及内容是否正确不保证。达、到达顺序以及内容是否正确不保证。 IPIP 以及端口地址包含在报头中以及端口地址包含在报头中

Page 21: Java  语言编程技术

Java 语言编程技术 21

InetAddress 类 代表一个代表一个 IPIP 地址地址 创建创建 InetAddressInetAddress 对象的方法对象的方法

static InetAddress getByName(String)static InetAddress getByName(String) InetAddress ip1 =InetAddress ip1 = InetAddress. getByName(“202.113.28.6");InetAddress. getByName(“202.113.28.6");InetAddress ip2 = InetAddress ip2 = InetAddress. getByName(InetAddress. getByName( "www.nankai.edu.cn");"www.nankai.edu.cn");

Page 22: Java  语言编程技术

Java 语言编程技术 22

InetAddress 类 static InetAddress getLocalHost()static InetAddress getLocalHost()

InetAddress ip1=InetAddress ip1= InetAddress.getLocalHost();InetAddress.getLocalHost();

InetAddress.getLocalHost();InetAddress.getByName(null);InetAddress.getByName(null);InetAddress.getByName("127.0.0.1");InetAddress.getByName("127.0.0.1");InetAddress.getByName("localhost");InetAddress.getByName("localhost");

Page 23: Java  语言编程技术

Java 语言编程技术 23

InetAddress 类(续) 其他方法其他方法

String getHostAddress(): String getHostAddress(): 返回“返回“ %%d.%d.%d.%d”d.%d.%d.%d” 形式的形式的 IPIP 地地址址 String getHostName(): String getHostName(): 返回主机名返回主机名 String toString()String toString()

Page 24: Java  语言编程技术

Java 语言编程技术 24

TCP 通信

使用使用SocketSocket 类类ServerSocketServerSocket 类类

Page 25: Java  语言编程技术

Java 语言编程技术 25

SocketSocket 是网络上运行的程序之间双向通信是网络上运行的程序之间双向通信链路的最后终结点链路的最后终结点网络服务

Mail

ftp

finger

20telnet

数据结构I/O缓冲区端口

2123客户程序 Socket

IP,port

IP与端口的组合得出一个套接字 ,可以完全分辨internet上运行的程序

Page 26: Java  语言编程技术

Java 语言编程技术 26

TCP 通信

Server端通讯过程

Client端通讯过程

在某端口创建ServerSocket对象提供监听

等待并接收Client端的请求

利用返回的Socket对象与Client端通讯

关闭 Socket结束与此Client的通讯

关闭监听

创建 Socket对象向 Server某端口请求利用此 Socket对象与 Server端通讯

关闭 Socket结束与此Server的通讯

建立连接 数据通讯 拆除连接

Page 27: Java  语言编程技术

Java 语言编程技术 27

Socket 类 构造函数:构造函数: Socket(InetAddress addr , int port) Socket(InetAddress addr , int port) Socket(String addr , int port) Socket(String addr , int port) 方法:方法:InputStream InputStream getInputStreamgetInputStream();();outputStream outputStream getoutputStreamgetoutputStream();();

Page 28: Java  语言编程技术

Java 语言编程技术 28

Server 类 指定指定端口号,端口号,创建一个创建一个 ServerSocketServerSocket 对象对象 ::

ServerSocket(int port);ServerSocket(int port); ServerSocket(int port, int count);ServerSocket(int port, int count);

ServerSocket mSer = new ServerSocket(8010);ServerSocket mSer = new ServerSocket(8010); 在该端口监听,当收到在该端口监听,当收到 ClientClient 发出的请求时,创建一发出的请求时,创建一

个个 SocketSocket 对象与此对象与此 ClientClient 通讯通讯Socket ReturnS = mSer.accept();Socket ReturnS = mSer.accept(); 接收到接收到 ClientClient 请求之前该线程处于阻塞状态请求之前该线程处于阻塞状态

通过通过 SocketSocket 类的类的 I/OI/O 流对象与流对象与 ClientClient 端通信端通信 关闭用来与关闭用来与 ClientClient 做数据做数据 I/OI/O 的的 SocketSocket 对象对象 撤消服务时,关闭撤消服务时,关闭 ServerSocketServerSocket 对象对象

mServer.close();mServer.close();

Page 29: Java  语言编程技术

Java 语言编程技术 29

socket 通信Client

//试图连接Socket(host;port#)

OutputStreamInputStream

Socket.close()

Server

//占用某个端口ServerSocket(hostport)

//等待连接ServerSocket.accept()

Socket()

OutputStreamInputStream

Socket.close()

Page 30: Java  语言编程技术

Java 语言编程技术 30

Server 端ServerSocket server=null;try { server=new ServerSocket(2000);}catch(IOException e){ System.out.println("can not listen to :"+e);}Socket socket=null;try { socket=server.accept();}catch(IOException e){ System.out.println("Error:"+e);}

Page 31: Java  语言编程技术

Java 语言编程技术 31

Client 端 用用 ServerServer 端端主机号主机号 ,, 端口号端口号创建创建 SocketSocket 对象对象 Socket mClient = new Socket(202.113.3.3,8010);Socket mClient = new Socket(202.113.3.3,8010);

利用利用 SocketSocket 实现网络 实现网络 I/OI/OInputStream rDIn=mClient.getInputStream();InputStream rDIn=mClient.getInputStream();OutputStream rD=mClient.getOutputStream();OutputStream rD=mClient.getOutputStream();

关闭关闭 SocketSocket ,,结束通讯结束通讯mClient.close();mClient.close();

Page 32: Java  语言编程技术

Java 语言编程技术 32

TCP 通信例 JabberServer.javaJabberServer.java JabberClient.javaJabberClient.java

Page 33: Java  语言编程技术

Java 语言编程技术 33

JabberServer.javapublic static final int PORT = 7777;

ServerSocket s = new ServerSocket(PORT);

Socket socket = s.accept();

BufferedReader in = new BufferedReader(

new InputStreamReader(

socket.getInputStream()));

PrintWriter out = new PrintWriter(

new BufferedWriter(

new OutputStreamWriter(

socket.getOutputStream())),true);

Page 34: Java  语言编程技术

Java 语言编程技术 34

JabberServer.javawhile (true) {

String str = in.readLine();

if (str.equals("END")) break;

System.out.println("Echoing: " + str);

out.println(str);

}

Page 35: Java  语言编程技术

Java 语言编程技术 35

JabberClient.java

InetAddress addr = InetAddress.getByName(null);

Socket socket = new Socket(addr,

JabberServer.PORT);

BufferedReader in =

new BufferedReader(

new InputStreamReader(

socket.getInputStream()));

Page 36: Java  语言编程技术

Java 语言编程技术 36

JabberClient.java

PrintWriter out = new PrintWriter(

new BufferedWriter(

new OutputStreamWriter(

socket.getOutputStream())),true);

for(int i = 0; i < 10; i ++) {

out.println("howdy " + i);

String str = in.readLine();

}

Page 37: Java  语言编程技术

Java 语言编程技术 37

server 多客户机制 服务器通信程序采用多线程,每个线程服务器通信程序采用多线程,每个线程负责与一个客户对话负责与一个客户对话

ServerThread extend Thread{ServerThread extend Thread{ … … public void run() { public void run() { 服务器端通信程序服务器端通信程序 }}}}

… … sSocket=new Serversocket(8000)sSocket=new Serversocket(8000) … … while (listening) {while (listening) { tSocket= sSocket.accept() ;tSocket= sSocket.accept() ; new ServerThread(tSocket).start()new ServerThread(tSocket).start() }}

Page 38: Java  语言编程技术

Java 语言编程技术 38

server 多客户机制 例 例 MultiJabberServer.javaMultiJabberServer.java MultiJabberClient.javaMultiJabberClient.java

Page 39: Java  语言编程技术

Java 语言编程技术 39

UDP 通信 使用使用

DatagramPacketDatagramPacket 类类DatagramSocketDatagramSocket 类类

Page 40: Java  语言编程技术

Java 语言编程技术 40

TCPTCP 提供高可靠性服务提供高可靠性服务 ,, 适用于一次要传适用于一次要传输交换大量报文的情况输交换大量报文的情况 ,, 信道上传递的包信道上传递的包不需要源地址和目的地址不需要源地址和目的地址 UDPUDP 提供高效率服务提供高效率服务 ,, 适用于依次传输交适用于依次传输交换少量报文的情形 换少量报文的情形 (( 如数据库查询如数据库查询 ),), 每个每个数据包要包含目的地址和端口号数据包要包含目的地址和端口号 .. 数据报文的使用以包为中心数据报文的使用以包为中心 :: 打包打包 ,, 拆包拆包 . . Java.netJava.net 包支持两种不同的在网络上送数据包支持两种不同的在网络上送数据的方法的方法 :: 一般套接字和数据报文套接字一般套接字和数据报文套接字 ..

Page 41: Java  语言编程技术

Java 语言编程技术 41

发出报文的标准步骤如下发出报文的标准步骤如下 ::1. 1. 定义数据成员定义数据成员 DatagramSocket socket;DatagramSocket socket; DatagramPacket packet;DatagramPacket packet; InetAddress address;(InetAddress address;( 用来存放接收方的地址用来存放接收方的地址 )) int port;(int port;( 用来存放接收方的端口号用来存放接收方的端口号 ))

2. 2. 创建数据报文创建数据报文 SocketSocket 对象对象 try {socket=new DatagramSocket(1111);}try {socket=new DatagramSocket(1111);} catch(java.net.SocketException e) {}catch(java.net.SocketException e) {} socket socket 绑定到一个本地的可用端口绑定到一个本地的可用端口 ,,等待接收等待接收客户的请求客户的请求 ..

Page 42: Java  语言编程技术

Java 语言编程技术 42

3.3. 分配并填写数据缓冲区分配并填写数据缓冲区 (( 一个字节类型一个字节类型的数组的数组 )) byte[] Buf=new byte[256]; byte[] Buf=new byte[256]; 存放从客户端接收的请求信息存放从客户端接收的请求信息 ..4.4. 创建一个创建一个 DatagramPacketDatagramPacket packet=new DatagramPacket(buf, 256);packet=new DatagramPacket(buf, 256); 用来从用来从 socketsocket 接收数据接收数据 ,, 它只有两它只有两个参数个参数 5. 5. 服务器阻塞服务器阻塞 socket.receive(packet);socket.receive(packet); 在客户的请求报道来之前一直等待在客户的请求报道来之前一直等待

Page 43: Java  语言编程技术

Java 语言编程技术 43

6. 6. 从到来的包中得到地址和端口号从到来的包中得到地址和端口号 InetAddress address=packet.getAddress();InetAddress address=packet.getAddress(); int port=packet.getPort();int port=packet.getPort();7. 7. 将数据送入缓冲区将数据送入缓冲区 或来自文件或来自文件 ,, 或键盘输入或键盘输入8. 8. 建立报文包建立报文包 ,, 用来从用来从 socketsocket 上发送信息上发送信息 packet=new DatagramPacket packet=new DatagramPacket (buf,buf.length, address,port);(buf,buf.length, address,port);9. 9. 发送数据包发送数据包 socket.send(packet); socket.send(packet); 10.10. 关闭关闭 socket socket.close();socket socket.close();

Page 44: Java  语言编程技术

Java 语言编程技术 44

客户端接收包的步骤如下客户端接收包的步骤如下 ::1. 1. 定义数据成员定义数据成员 int port; InetAddress address;int port; InetAddress address; DatagramSocket socket;DatagramSocket socket; DatagramPacket packet;DatagramPacket packet; byte[] sendBuf=new byte[256];byte[] sendBuf=new byte[256];2. 2. 建立建立 socketsocket socket=new DatagramSocket();socket=new DatagramSocket();

Page 45: Java  语言编程技术

Java 语言编程技术 45

3. 3. 向服务器发出请求报文向服务器发出请求报文 address=InetAddress.getByName(args[0]);address=InetAddress.getByName(args[0]); port=parseInt(args[1]);port=parseInt(args[1]); packet=new packet=new

DatagramPacket(sendBuf,256,address,port);DatagramPacket(sendBuf,256,address,port); socket.send(packet);socket.send(packet); 这个包本身带有客户端的信息这个包本身带有客户端的信息4. 4. 客户机等待应答客户机等待应答 packet=new DatagramPacket(sendBuf,256);packet=new DatagramPacket(sendBuf,256); socket.receive(packet);(socket.receive(packet);( 如果没有到就一直等如果没有到就一直等

待待 ,,因此实用程序要设置时间限度因此实用程序要设置时间限度 ) )

Page 46: Java  语言编程技术

Java 语言编程技术 46

5. 5. 处理接收到的数据处理接收到的数据 String received=new String received=new

String(packet.getData(),0);String(packet.getData(),0); System.out.println(received);System.out.println(received);

数据报套接字首先是强调发送方和接收方的区数据报套接字首先是强调发送方和接收方的区别别 ,, 同时也指出服务器和客户之间的不同同时也指出服务器和客户之间的不同 ::

一个客户机必须事先知道服务器的地址和端一个客户机必须事先知道服务器的地址和端口口 ,, 以便进行初始连接以便进行初始连接

一个服务器从它接收到的数据报文中读取客户一个服务器从它接收到的数据报文中读取客户端的地址和端口端的地址和端口 ..

Page 47: Java  语言编程技术

Java 语言编程技术 47

建立数据报 socket();

建立一个报文包 packet

等待请求报文

建立数据报 socket

建立一个请求包发出请求

获得对方地址构成信息包发送出去

创建接收包等待接收

Page 48: Java  语言编程技术

Java 语言编程技术 48

UDP 通信 DatagramPacketDatagramPacket 构造方法:构造方法:

DatagramPacket(byte [] recvBuf, DatagramPacket(byte [] recvBuf, int readLength)int readLength)

用于用于接收 UDPUDP 包。包。 DatagramPacket(byte [] sendBuf, int DatagramPacket(byte [] sendBuf, int

sendLength, InetAddress iaddr, int iport)sendLength, InetAddress iaddr, int iport)

用于用于发送 UDPUDP 包。包。

Page 49: Java  语言编程技术

Java 语言编程技术 49

UDP 通信 DatagramSocketDatagramSocket 用来读写用来读写 UDPUDP 包。包。

DatagramSocket()DatagramSocket() 绑定本地主机的一个可用端口绑定本地主机的一个可用端口

DatagramSocket(int port)DatagramSocket(int port) 绑定本地主机的指定端口绑定本地主机的指定端口例如:例如: DatagramSocket socket DatagramSocket socket = new DatagramSocket();= new DatagramSocket();

Page 50: Java  语言编程技术

Java 语言编程技术 50

发送与接收 发送发送

接收接收

DatagramPacket packet = new DatagramPacket(buf,buf.length, address,port);socket.send(packet);

DatagramPacket packet = new DatagramPacket(buf, 256);socket.receive(packet);

Page 51: Java  语言编程技术

Java 语言编程技术 51

发送与接收 例 例 DatagramServer1.javaDatagramServer1.java DatagramClient.java DatagramClient.java

Page 52: Java  语言编程技术

Java 语言编程技术 52

实现网络功能要靠实现网络功能要靠 URLURL 类类 , URLConection, URLConection 类类 , , SocketSocket 类和类和 DatagramSocketDatagramSocket 类类

网络上的数据传送是将网络连接转换成输入输网络上的数据传送是将网络连接转换成输入输出流出流 DataInputStreamDataInputStream 和和 DataOutputStream DataOutputStream

(PrintStream)(PrintStream) 是网间流的载体是网间流的载体 .. URLURL 适用于适用于 webweb 应用应用 ,, 如访问如访问 httphttp 服务器是高服务器是高层服务层服务 URLConectionURLConection 的另一边通常是的另一边通常是 cgicgi 程序程序 cgicgi 程序完成客户端与外部程序的交互程序完成客户端与外部程序的交互

总结

Page 53: Java  语言编程技术

Java 语言编程技术 53

cgicgi 通过访问环境变量或读标准输入获得通过访问环境变量或读标准输入获得数据数据 SocketSocket 适用于面向连接的适用于面向连接的 ,, 可靠性要求高可靠性要求高的应用的应用 DatagramDatagram 适用于效率要求高的应用适用于效率要求高的应用 SocketSocket 是由是由 IPIP 和端口构成的一种网上通和端口构成的一种网上通信链路的一端信链路的一端 SocketSocket 通信要分别运行服务器和客户程序通信要分别运行服务器和客户程序 服务器程序是多线程的服务器程序是多线程的 ,, 可处理多个客户可处理多个客户的请求的请求