|
网络编程的三要素
协yi:就是两个设备之间的一个通信协yi(建立的规范或者规则:UDP,TCP)
IP:就是每个设备的唯一标识
端口:在设备中,每个进程唯一标识.范围(0-65535)
UDP的特点:
面向无连接,效率高,安全性低,发生数据的大小有限制64k
TCP协yi的特点
面向连接(三次握手),效率低,安全性高,没有数据的大小限制
UDP发送端和接收端- package com.wwangluo_1;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- import java.net.SocketException;
- import java.net.UnknownHostException;
- public class SendDemo {
- public static void main(String[] args) throws SocketException, IOException {
- // 创建发送端对象
- DatagramSocket d = new DatagramSocket();
- // 创建数据
- String s = "Hell World";
- // 封装数据
- byte[] by = s.getBytes();
- int length = by.length;
- InetAddress ia = InetAddress.getByName("替换本地ip");
- int port = 8888;
- // 打包数据
- DatagramPacket dp = new DatagramPacket(by, length, ia, port);
- // 发送数据
- d.send(dp);
- // 释放资源
- d.close();
- }
- }
复制代码- package com.wwangluo_1;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- import java.net.SocketException;
- public class DataDemo {
- public static void main(String[] args) throws IOException {
- // 创建接收端对象
- DatagramSocket ds = new DatagramSocket(8888);
- // 接收数据
- byte[] by = new byte[1024];
- // 封装接收数据
- DatagramPacket dp = new DatagramPacket(by, by.length);
- ds.receive(dp);
- // 解析获取的数据
- InetAddress addres = dp.getAddress();
- int length = dp.getLength();
- System.out.println("Sender---->" + addres.getHostAddress());
- System.out.println(new String(by, 0, length));
- // 释放资源
- ds.close();
- }
- }
复制代码
TCP客户Duan和服务端
- package com.wwangluo_2;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.InetAddress;
- import java.net.Socket;
- import java.net.UnknownHostException;
- public class ClientDemo {
- /*
- * 利用TCP协yi完成以下需求: 客户Duan发给服务端 数据 服务端将客户Duan发送过来的数据中的 字母全部转换为大写,写给客户Duan 客户Duan打印转换后的数据
- */
- public static void main(String[] args) throws IOException {
- // 创建客户Duan对象
- Socket s = new Socket(InetAddress.getByName("替换本地ip地址"), 8888);
- // 获取输出流对象
- OutputStream os = s.getOutputStream();
- // 发送数据
- String str = "hello";
- byte[] bys = str.getBytes();
- os.write(bys);
- // 接收服务端数据
- InputStream is = s.getInputStream();
- byte[] newbys = new byte[1024];
- int len = is.read(newbys);
- System.out.println(new String(newbys, 0, len));
- // 释放资源
- s.close();
- os.close();
- }
- }
复制代码- package com.wwangluo_2;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class ServerDemo {
- public static void main(String[] args) throws IOException {
- // 创建服务端对象
- ServerSocket ss = new ServerSocket(8888);
- // 获取客户Duan传输数据的对象
- Socket s = ss.accept();
- // 获取输入流对象
- InputStream is = s.getInputStream();
- byte[] bys = new byte[1024];
- int len = is.read(bys);
- String str = new String(bys, 0, len);
- // 把获取到的数据转换大写
- String newstr = str.toUpperCase();
- // 创建输出流对象
- OutputStream os = s.getOutputStream();
- os.write(newstr.getBytes());
- s.close();
- }
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|