浅谈java中的网络编程
1.基础
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来.
在java中提供了java.net包,其中包含类和接口.它们提供低层次的通信细节.我们可以直接使用这些类和接口,专门解决问题.
互联网的三大基石: url html http
java.net包中提供了两种常见的网络协议的支持:
UDP: 用户数据报协议的缩写.非面向连接 , 不安全, 协议简单,开销小,效率高, 大小有限制,一般不超过60k
TCP:面向连接, 安全,效率低 . 基于3次握手: 1.拨号 2.响应,连接上 3.发送数据
2.UDP
1.UDP实现基本流程: 发送端
使用DatagramSocket指定端口,创建发送端
准备数据 一定要转成字节数组
封装成DatagramPacket包裹
发送包裹send(DatagramPacket p)
释放资源
发送端示例1:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
public class UDPSend1 {
public static void main(String[] args) throws Exception {
System.out.println("发送方启动中...");
// 1.使用DatagramSocket指定端口,创建发送端
DatagramSocket client = new DatagramSocket(6666);
// 2.准备数据 一定要转成字节数组
String data = "落霞与孤鹜齐飞,秋水共长天一色";
byte[] datas = data.getBytes();
// 3.封装成DatagramPacket包裹
DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress("localhost", 8888));
// 4.发送包裹send(DatagramPacket p)
client.send(packet);
// 5.释放资源
client.close();
}
}
2.UDP实现基本流程: 接收端
使用DatagramSocket指定端口,创建接收端
准备容器,封装成DatagramPacket包裹
阻塞式接收包裹receive(DatagramPacket p)
分析数据
释放资源
接收端示例1:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPReceive1 {
public static void main(String[] args) throws Exception {
System.out.println("接收端准备中.... ");
// 1.使用DatagramSocket指定端口,创建接收端
DatagramSocket server = new DatagramSocket(8888);
// 2.准备容器,封装成DatagramPacket包裹
byte[] container = new byte[1024 * 60];
DatagramPacket packet = new DatagramPacket(container, 0, container.length);
// 3.阻塞式接收包裹receive(DatagramPacket p)
server.receive(packet);
// 4.分析数据
byte[] datas = packet.getData();
int len = packet.getLength();
System.out.println(new String(datas, 0, len));
// 5.释放资源
server.close();
}
}
3.TCP
1.TCP实现基本流程:客户端
定义客户端 Socket Socket(String host, int port) 创建一个流套接字连接到指定主机上的指定端口号
准备数据
写出 IO操作
释放资源
客户端示例2:
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client01 {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("-------------Client-----------");
//1.定义客户端 Socket Socket(String host, int port)
Socket client=new Socket("127.0.0.1",7777);
//2.准备数据
String str="name=zhangsan&pwd=123";
//3.写出 直接从管道中获取流
DataOutputStream data=new DataOutputStream(client.getOutputStream());
data.writeUTF(str);
data.flush();
//4.关闭
data.close();
client.close();
}
}
2.TCP实现基本流程:服务端
定义服务端 ServerSocket ServerSocket(int port) 创建一个服务器套接字绑定到指定端口
阻塞式监听 Socket accept()
监听连接套接字并接受它
io操作
释放资源
服务端示例2:
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server01 {
public static void main(String[] args) throws IOException {
System.out.println("-------------Server-----------");
//1.定义服务端
ServerSocket server=new ServerSocket(7777);
//2.阻塞式监听 Socket accept()
Socket client=server.accept();
//3.io操作,直接从管道中获得流
DataInputStream in=new DataInputStream( client.getInputStream());
String str=in.readUTF();
System.out.println(str);
//4.释放资源
in.close();
client.close();
server.close();
}
}
今天的文章浅谈Java中的网络编程分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/21491.html