Java–13
第十章 网络编程
前言
21世纪,走进了信息时代,各种各样的软件层出不穷,但是总离不开程序开发,离不开程序开发语言,Java语言作为人们所熟知的一门语言,对于其有必要进行系统的学习。
网络编程
1.定义
网络编程即Socket套接字编程,使用一个服务器,支持多个客
户端进行数据传递;
2.TCP通信
TCP通信需要服务器端与客户端进行连接,其中ServerSocket
即服务器端的Socket,可以创建一个服务器,使得其它客户端
可以进行连接并进行交互访问;
(1).ServerSocket
try {
ServerSocket server=new ServerSocket(8080);//实例化ServerSocket对象,参数为端口号
while(true){
System.out.println("--等待连接");
Socket client= server.accept();//获取客户端连接
if(client!=null){
System.out.println("--连接成功"+client.getInetAddress());
OutputStream outputStream = client.getOutputStream();//获取客户端的输出流
outputStream.write("Hello World".getBytes());
System.out.println("发送成功");
outputStream.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
(2).Socket
Socket即创建客户端,可以连接服务器,并进行数据交互
Socket client = new Socket("localhost", 8080);//实例化客户端,第一个参数为IP地址,第二个为端口号
System.out.println("--连接成功");
int a = 0;
int b = 0;
byte[] by = new byte[100];
InputStream inputStream = client.getInputStream();//获取当前客户端的输入流
String str = "";
while ((a = inputStream.read()) != -1) {
by[b++] = (byte) a;
}
System.out.println(new String(by));//输出数据
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
3.UDP通信
UDP通信是的发送方与接收方不需要进行连接,故其数据传输并
不安全,其需要使用到DatagramSocket与DatagramPacket
(1).发送方
try {
DatagramSocket sender=new DatagramSocket();//实例化DatagramSocket对象
byte[] data="Hello World".getBytes();//将数据转换成字节形式
//实例化DatagramPacket对象,参数依次为,需要传输的字节数据,起始位置,结束为止,目标ip地址,端口号
DatagramPacket packet=new DatagramPacket(data,0,data.length, InetAddress.getByName("localhost"),8080);
sender.send(packet);//发送数据包
} catch (SocketException | UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
(2).接收方
try {
DatagramSocket receiver=new DatagramSocket(8080);//指定监听的端口号
byte[] data=new byte[100];
DatagramPacket packet=new DatagramPacket(data,data.length);
while (true){
receiver.receive(packet);//接收数据
System.out.println(new String(data));
}
} catch (UnknownHostException | SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
笔记如有错误,遗漏之处,欢迎指正!