------- 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:文件上传成功
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-03 14:15:16