java之旅(三十三)

上传人:第*** 文档编号:34053995 上传时间:2018-02-20 格式:DOC 页数:12 大小:84KB
返回 下载 相关 举报
java之旅(三十三)_第1页
第1页 / 共12页
java之旅(三十三)_第2页
第2页 / 共12页
java之旅(三十三)_第3页
第3页 / 共12页
java之旅(三十三)_第4页
第4页 / 共12页
java之旅(三十三)_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《java之旅(三十三)》由会员分享,可在线阅读,更多相关《java之旅(三十三)(12页珍藏版)》请在金锄头文库上搜索。

1、JAVA 之旅(三十三)一.TCP说完 UDP,我们就来说下我们应该重点掌握的 TCP 了TCP 传输 Socket 和 ServiceSocket建立客户端和服务端建立连接后,通过 Socket 中的 IO 流进行数据的传输关闭 Socket同样的,我们的客户端和服务端都是两个独立的应用我们通过查阅 API 文档发现,该对象在建立的时候,就可以去连接指定主机,因为 tcp 是面向连接的,所以在建立 socket 服务时,就要有服务存在,并成功连接,形成通路后,在该通道进行数据传输所以我们用代码来看下他的步骤客户端package com.lgl.hellojava;import java.io

2、.IOException;import java.io.InputStream;import java.io.OutputStream;import .ServerSocket;import .Socket;import .UnknownHostException;public class TcpClient public static void main(String args) try /1.创建客户端的服务,传地址和端口Socket s = new Socket(192.168.1.102,10000);/2.为了发送数据,应该获得 socket 流中的输出流OutputStream o

3、ut = s.getOutputStream();out.write(你好.getBytes();s.close(); catch (UnknownHostException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); 服务端package com.lgl.hellojava;import java.io.IOException;import java.io.InputStr

4、eam;import .ServerSocket;import .Socket;/* 定义端点接收数据打印出来* 服务端:* 1.建立服务端的 socket 服务,servicesocket,并监听一个端口* 2.获取连接过来的客户端对象,通过 accept 方法,这个方法是阻塞的,没有连接就会等* 3.客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该对象的读取流* 4.关闭服务端(可选操作)* author LGL*/public class TcpService public static void main(String args) try /1.建立连接,监听端口Se

5、rverSocket ss = new ServerSocket(10000);/2.连接客户端对象Socket accept = ss.accept();/获取 ipString ip = accept.getInetAddress().getHostAddress();/3.获取客户端发送过来的数据InputStream in = accept.getInputStream();/4.开始读取byte buf = new byte1024;int len = in.read(buf);System.out.println(new String(buf,0,len);/5.关闭ss.clos

6、e(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); 二.TCP 互相传输我们在来写一个实例去说明,他们的互访动作,这里为了写起来方便,就写在一个类中了package com.lgl.hellojava;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import .ServerSocket;import .Socket;import .UnknownHostExcepti

7、on;/* 客户端发送信息,服务端收到,反馈信息* * author LGL*/public class Tcp public static void main(String args) try Socket s = new Socket(192.168.1.102, 10005);OutputStream out = s.getOutputStream();out.write(我是客户端.getBytes();InputStream in = s.getInputStream();byte buf = new byte1024;int len = in.read(buf);System.ou

8、t.println(new String(buf, 0, len);s.close(); catch (UnknownHostException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();/* * 服务端* author LGL*/class Server public static void main(String args) try ServerSocket ss = n

9、ew ServerSocket(10005);Socket s = ss.accept();InputStream in = s.getInputStream();byte buf = new byte1024;int len = in.read(buf);System.out.println(new String(buf, 0, len);OutputStream out = s.getOutputStream();out.write(收到后反馈.getBytes();s.close();ss.close(); catch (IOException e) / TODO Auto-genera

10、ted catch blocke.printStackTrace();三.复制文件同样的这里也是使用的流,我们具体来看下怎么去操作,我们同样的,写在一个类中package com.lgl.socket;import java.io.BufferedReader;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import .ServerSocket;import .S

11、ocket;import .UnknownHostException;public class FileClient public static void main(String args) try Socket s = new Socket(192.168.1.102, 10006);BufferedReader bufr = new BufferedReader(new FileReader(test.txt);PrintWriter pw = new PrintWriter(s.getOutputStream(), true);String line = null;while (line

12、 = bufr.readLine() != null) pw.println(line);pw.print(over);BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream();String str = bufIn.readLine();System.out.println(str);bufr.close();s.close(); catch (UnknownHostException e) / TODO Auto-generated catch blocke.printStackTra

13、ce(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();class FileServer public static void main(String args) try ServerSocket ss = new ServerSocket(10006);Socket s = ss.accept();BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream();PrintWriter o

14、ut = new PrintWriter(new FileWriter(test1.txt), true);String line = null;while (line = bufIn.readLine() != null) if (over.equals(line)break;out.println(line);PrintWriter pw = new PrintWriter(s.getOutputStream(), true);pw.println(上传成功);out.close(); s.close();ss.close(); catch (IOException e) / TODO A

15、uto-generated catch blocke.printStackTrace();四.上传图片我们再来看下图片是怎么上传的,我们先来分析下步骤客户端1.服务端点2.读取客户端已有的图片数据3.通过 socket,发送给服务端4.读取服务端反馈的信息5.关闭资源* 客户端* * author LGL*/public class PicClient public static void main(String args) try Socket s = new Socket(192.168.1.102, 10009);FileInputStream fis = new FileInputStream(1.png);OutputStream out = s.getOutputStream();byte buf = new byte1024;int len = 0;while (len = fis.read(buf) != -1) out.write(buf, 0, len);/告訴服务端数据写完s.shutdownInput();InputSt

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号