码迷,mamicode.com
首页 > Web开发 > 详细

黑马程序员---网络编程之文件上传

时间:2015-06-30 22:07:20      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

------- android培训java培训期待与您交流! ----------

   网络编程

(1)用编程语言来实现计算机的资源共享和信息传递。
计算机网络:多台独立的计算机用网络通信设备连接起来的网络。实现资源共享和数据传递。
(2)网络通信的三要素
A:IP地址
计算机在网络中的唯一标识。
现在使用的是:"点分十进制"
B:端口
应用程序的的标记。
C:协议
通信的规则。
UDP:不建立连接,数据打包传输,数据有限制,数据不可靠,速度快。
TCP:建立连接,数据无限制,数据可靠,速度慢。
(3)UDP发送和接收数据
先开启谁都无所谓。
A:发送端
步骤:
创建发送端的Socket服务对象。
创建数据并把数据打包。
发送数据。
释放资源。
代码体现:
<span style="white-space:pre">		</span>DatagramSocket ds = new DatagramSocket();
		byte[] bys = "udp,我来了".getBytes();
		DatagramPacket dp = new DatagramPacket
		(bys,bys.length,InetAddress.getByName("192.168.32.80"),12345);
		ds.send(dp);
		ds.close();

B:接收端
步骤:
创建接收端的Socket服务对象。
创建数据包。
接收数据。
解析数据。
释放资源。
代码体现:
<span style="white-space:pre">		</span>DatagramSocket ds = new DatagramSocket(12345);
		byte[] bys = new byte[1024];
		DatagramPacket dp = new DatagramPacket(bys,bys.length);
		ds.receive(dp);
		String ip = dp.getAddress().getHostAddress();
		String data = new String(dp.getData(),0,dp.getLength());
		System.out.println(ip+"---"+data);
		ds.close();<span style="font-family: 'Microsoft YaHei'; background-color: rgb(255, 255, 255);">		</span>
(4)TCP发送和接收数据
必须先开启服务器。
A:客户端
步骤:
创建客户端Socket对象。
获取输出流。
写数据。
释放资源。
代码体现:
		Socket s = new Socket("192.168.32.80",12345);
		OutputStream os = s.getOutputStream();
		os.write("tcp,我来了".getBytes());
		s.close();
B:服务器端
步骤:
创建服务器Socket对象。
监听客户端连接。
获取输入流。
读取数据。
释放资源。
代码体现:
		ServerSocket ss = new ServerSokcet(12345);
		Socket s = ss.accept();
		InputStream is = s.getInputStream();
		byte[] bys = new byte[1024];
		int len = is.read(bys);
		String data = new String(bys,0,len);
		System.out.println(data);
		s.close();
			ss.close();

2、综合案例:
A:服务器给出反馈。
B:客户端是键盘录入,服务器输出到控制台。
C:客户端是键盘录入,服务器是写到文件。
D:客户端是读取文件,服务器是写到文件。反馈信息

E:客户端是读取图片,服务器是写到图片。反馈信息

客户端代码:

<span style="white-space:pre">		</span>public class ClientDemo {
	<span style="white-space:pre">	</span><span style="white-space:pre">	</span>public static void main(String[] args) throws IOException {
	<span style="white-space:pre">		</span>	// 窗口客户端对象
	<span style="white-space:pre">		</span>	Socket s = new Socket("192.168.237.1", 12345);
	<span style="white-space:pre">		</span>	InputStream is = new FileInputStream("test.jpg");
	<span style="white-space:pre">		</span>	// 写到通道
	<span style="white-space:pre">	</span>	<span style="white-space:pre">	</span>OutputStream os = s.getOutputStream();
	<span style="white-space:pre">	</span>	<span style="white-space:pre">	</span>int by = 0;
	<span style="white-space:pre">		</span>	while ((by = is.read()) != -1) {
	<span style="white-space:pre">	</span>	<span style="white-space:pre">	</span>	os.write(by);
	<span style="white-space:pre">		</span>	}
		<span style="white-space:pre">	</span><span style="white-space:pre">	</span>s.shutdownOutput();
	<span style="white-space:pre">		</span>	BufferedReader reader = new BufferedReader(new InputStreamReader(
	<span style="white-space:pre">		</span>			s.getInputStream()));
	<span style="white-space:pre">		</span>	String data = reader.readLine(); // 阻塞式
	<span style="white-space:pre">		</span>	System.out.println("client:" + data);
<span style="white-space:pre">		</span>
	<span style="white-space:pre">		</span>	// 释放资源
	<span style="white-space:pre">		</span>	is.close();
	<span style="white-space:pre">		</span>	s.close();
	<span style="white-space:pre">	</span><span style="white-space:pre">	</span>}
<span style="white-space:pre">		</span>}
服务器端代码:

       

<span style="white-space:pre">		</span>public class ServerDemo {
<span style="white-space:pre">		</span>	public static void main(String[] args) throws IOException {
	<span style="white-space:pre">		</span>	// 创建服务器对象
	<span style="white-space:pre">		</span>	ServerSocket ss = new ServerSocket(12345);
	<span style="white-space:pre">		</span>	// 监听客户端连接
	<span style="white-space:pre">		</span>	Socket s = ss.accept();
	<span style="white-space:pre">	</span>	<span style="white-space:pre">	</span>// 获取输入流
	<span style="white-space:pre">		</span>	InputStream is = s.getInputStream();
	<span style="white-space:pre">	</span>	<span style="white-space:pre">	</span>// 获取输出流
	<span style="white-space:pre">		</span>	OutputStream os = new FileOutputStream("copy.jpg");
	<span style="white-space:pre">		</span>	int by = 0;
	<span style="white-space:pre">		</span>	while ((by = is.read()) != -1) {
	<span style="white-space:pre">		</span>		os.write(by);
	<span style="white-space:pre">		</span>	}
	<span style="white-space:pre">		</span>	// 给出反馈
	<span style="white-space:pre">	</span><span style="white-space:pre">	</span>	BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
	<span style="white-space:pre">	</span><span style="white-space:pre">	</span>			s.getOutputStream()));
	<span style="white-space:pre">	</span><span style="white-space:pre">	</span>	writer.write("文件上传成功");
	<span style="white-space:pre">	</span><span style="white-space:pre">	</span>	writer.newLine();
	<span style="white-space:pre">	</span>	<span style="white-space:pre">	</span>writer.flush();
<span style="white-space:pre">	</span>
		<span style="white-space:pre">	</span><span style="white-space:pre">	</span>os.close();
	<span style="white-space:pre">	</span><span style="white-space:pre">	</span>	s.close();
	<span style="white-space:pre">		</span>	ss.close();
<span style="white-space:pre">	</span>	<span style="white-space:pre">	</span>}
<span style="white-space:pre">		</span>}
运行结果:

<span style="white-space:pre">	</span>client:文件上传成功

版权声明:本文为博主原创文章,未经博主允许不得转载。

黑马程序员---网络编程之文件上传

标签:

原文地址:http://blog.csdn.net/chaoyangmemory/article/details/46698605

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!