小
小宅
V1
2023/03/13阅读:21主题:默认主题
网络编程
网络编程三要素
-
ip 地址 -
端口 -
协议

ip
设备在网络中的唯一标识
ipv4
全球- ipv4 全球只有256 *256 * 256 * 256
ipv6
有128bit


常用命令

InetAddress 的使用


端口

协议
udp: 面向无连接
Tcp 面向连接

UDP 通信



--- demo ---

package com.itheima.scoketDemo2;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
public class ClientDemo {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
DatagramSocket ds = new DatagramSocket();
while (true) {
String s = sc.nextLine();
if( "886".equals(s) ) {
break;
}
byte[] bytes = s.getBytes();
InetAddress address = InetAddress.getByName("127.0.0.1");
int port = 10000;
DatagramPacket dp= new DatagramPacket(bytes, bytes.length, address, port);
ds.send(dp);
}
ds.close();
}
}
package com.itheima.scoketDemo2;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(10000);
while (true) {
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
ds.receive(dp);
byte[] data = dp.getData();
int length = dp.getLength();
System.out.println(new String(data, 0, length));
}
}
}
udp 的三种通信方法
-
单播 -
组播(多播) -
广播
组播demo




Tcp 通信



--- demo


TCp 三次握手

TCP 四次挥手

TCP 文件上传
服务端

package com.itheima.scoketDemo4;
import java.io.*;
import java.net.*;
public class ServerDemo {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(10000);
Socket accept = ss.accept();
// 网络中的流, 从客户端读取
BufferedInputStream bis = new BufferedInputStream(accept.getInputStream());
// 本地中的io 流, 把数据写到本地
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("/Users/lh/develop/mydate/ServerDir/copy.jpg"));
int b;
while((b= bis.read()) != -1) {
bos.write(b);
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(accept.getOutputStream()));
bw.write("上传成功");
bw.newLine();
bw.flush();
accept.close();
ss.close();
bos.close();
}
}
客户端

package com.itheima.scoketDemo4;
import javax.imageio.stream.FileImageInputStream;
import java.io.*;
import java.net.Socket;
// 文件上传
public class ClientDemo {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",10000);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("/Users/lh/develop/mydate/ClientDir/vue.jpg"));
// 写到服务器去- 网络中的流
OutputStream os = socket.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(os);
int b;
while ((b = bis.read()) != -1) {
bos.write(b); // 写到服务器去
}
// 代表传输完毕
socket.shutdownOutput();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = br.readLine())!= null) {
System.out.println(line);
}
socket.close();
bis.close();
}
}
作者介绍
小
小宅
V1