您的位置:首页 > 理论基础 > 计算机网络

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

2015-06-30 17:48 666 查看
------- 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"> <
9a26
;/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:文件上传成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: