清华大学张思民Java课件第9章.ppt
文本预览下载声明
哈尔滨工业大学计算机系代亚非 Java语言程序设计 主要内容 1、网络编程基础 2、基于TCP网络程序设计 3、基于UDP网络程序设计 4、* 基于C/S模式的分布计算 一、 Java与网络 IP协议、 TCP协议和UDP协议。 传输层数据报文结构:TCP 传输层数据报结构:UDP报文 2、端口号 端口号:TCP/IP协议为每种服务定义了一个端口。 3、 套接字Socket Socket是网络程序中最常用的方式,用于建立两个不同程序之间通过网络进行通信的信道。 2、 套接字Socket 什么是socket ? 进程与进程之间建立起连接 建立套接字Socket 在客户端使用socket类,指定服务器IP和端口号,以便连到服务器上: Socket(host_IP, prot); 在服务器端使用ServerSocket类,以等待客户端的连接: ServerSocket(port); Socket主要方法: 在客户端:建立socket连接后,还应该建立输入输出数据流。 getInputStream( ) 获得输入流 getOutputStream( ) 获得输出流 在服务器端: ServerSocket类的accept( )方法使服务器处于阻塞状态,等待用户请求。 二、TCP协议 Socket编程 例1:演示服务器与客户之间的交互,服务器等待,客户访问,相互通一次信息。 客户端向服务器发出信息:“你好”,服务器接收到信息后,给出回应:“你好,我是服务器。” 21.5 Socket 客户机端 import java.io.*; import .*; class C { public static void main(String[] args) { try{ Socket socket=new Socket(,6565); DataOutputStream out=new DataOutputStream(socket.getOutputStream()); out.writeUTF(我是客户机); DataInputStream in=new DataInputStream(socket.getInputStream()); String s=in.readUTF(); System.out.println(客户机收到:+s); }catch(Exception e){} } } 服务器端 import java.io.*; import .*; class S { public static void main(String[] args) { try{ ServerSocket s_socket=new ServerSocket(6565); Socket socket=s_socket.accept(); DataInputStream in=new DataInputStream(socket.getInputStream()); String s=in.readUTF(); System.out.println(服务器收到:+s); DataOutputStream out=new DataOutputStream(socket.getOutputStream()); out.writeUTF(我是服务器); }catch(Exception e){} } } 21.5 Socket 显示服务器与客户机间的通信(服务器端) 考虑多用户 第一种解决方案: 一台计算机上一次启动多个服务器程序,只是端口号不同。 myserver --------myclient----f21.bat myserver2--------myclient2----f9.bat 多用户的第二种方案 (支持多客户) 服务器端 . 服务器端 在Java中,网络类都在 类库中。 用来存储internet地址的类InetAddress. 其主要方法: getHostName( ) 获取InetAddress对象的主机名或域名 getHostAddress( ) 获取InetAddress对象的IP地址 getLocalHost( )获取本机的IP地址 例:获取本机的IP地址 import .*; public class getLocalHostTest { public static void main(String args[]) { InetAddress myIP=null;
显示全部