网络编程 - Socket.ppt
文本预览下载声明
网络编程 - Socket C/S结构 网络通讯流程 服务器开始监听 客户端申请连接 服务器接受连接(此时连接已经建立) 服务器与客户端开始通讯 通讯条件 服务器IP或主机名或域名 通过IP来定位要连接的服务器所在位置 127.0.0.1表示本机IP Localhost表示本机 服务器监听的服务端口 通过IP找到要连接的服务器主机,但是服务器上运行着多个程序都监听着网络 而每个程序都监听着不同的端口 任何程序都必须通过端口来与网络通讯 这时,必须通过端口来定位服务器上要连接的程序 通讯条件 服务器 – 单用户 public static void main(String[] args) { ServerSocket serverSocket = null; InputStream is = null; InputStreamReader isr = null; BufferedReader br = null; Socket socket = null; try { serverSocket = new ServerSocket( 6789 );// 开始监听 socket = serverSocket.accept();// 等待接收数据 is = socket.getInputStream();// 获得通向Socket的低端流 isr = new InputStreamReader( is );// 高端流绑定低端流 br = new BufferedReader( isr );// 缓冲流绑定高端流 while ( true ) {// 循环读取 String line = br.readLine();// 接收数据 if ( null == line ) {// 如果客户端已经断开 break; } System.out.println( line ); } } catch ( Exception e ) {e.printStackTrace(); } finally { try {is.close();} catch ( Exception e ) {e.printStackTrace();} try {isr.close();} catch ( Exception e ) {e.printStackTrace();} try {br.close();} catch ( Exception e ) {e.printStackTrace();} try {socket.close();} catch ( Exception e ) {e.printStackTrace();} try {serverSocket.close();} catch ( Exception e ) {e.printStackTrace();} } } 客户端 public static void main(String[] args) { Socket socket = null; OutputStream os = null; PrintStream ps = null; try { socket = new Socket( “127.0.0.1”, 6789 );// 申请连接 os = socket.getOutputStream();// 获得通向Socket的低端流 ps = new PrintStream( os );// 高端流绑定低端流 ps.println( “把犯人给我押上!” );// 发送数据 ps.flush(); } catch ( Exception e ) {e.printStackTrace(); } finally { try {ps.close();} catch ( Exception e ) {e.printStackTrace();} try {os.close();} catch ( Exception e ) {e.printStackTrace();} try {socket.close();} catch ( Exception e ) {e.printStackTrace();} } } 服务器 – 多用户 …… serverSocket = new ServerSocket( 6789 );// 开始监听 while ( true ) {// 循环接收用户请求 socket = serverSocket.accept();// 等待接收数据 is = socket.getInputStream(); isr = new InputStreamReader( is ); br = new BufferedReader( isr ); while ( true ) { String l
显示全部