文件上传
服务器端:
public class TestServerDemo02 {
public static void main(String[] args) throws Exception {
//创建服务
ServerSocket serverSocket = new ServerSocket(9000);
//监听式客户端连接
Socket socket = serverSocket.accept();//阻塞式监听,会一直等待客户端连接
InputStream is = socket.getInputStream();
FileOutputStream fos = new FileOutputStream(new File("E:\kuang\JavaSE\net\receive.gif"));
//文件输出
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1){
fos.write(buffer,0,len);
}
//通知客户端我已接收完毕
OutputStream os = socket.getOutputStream();
os.write("我已经接收完毕了,可以断开了!".getBytes());
//关闭资源
os.close();
fos.close();
is.close();
socket.close();
serverSocket.close();
}
}
客户端:
public class TestClientDemo02 {
public static void main(String[] args) throws Exception {
//1.创建一个Socket连接
Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 9000);
//2.创建一个输出源
OutputStream os = socket.getOutputStream();
//3.读取文件
FileInputStream fis = new FileInputStream(new File("E:\kuang\JavaSE\net\male.gif"));
//4.写出文件
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1){
os.write(buffer,0,len);
}
//通知服务器,我已经结束了
socket.shutdownOutput();//我已经传输完了
//确定服务器接收完毕,才能断开连接
InputStream is = socket.getInputStream();
byte[] buffer2 = new byte[1024];
int len2;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((len2 = is.read(buffer2)) != -1){
baos.write(buffer2,0,len2);
}
System.out.println(baos.toString());
//5.关闭资源
baos.close();
is.close();
fis.close();
os.close();
socket.close();
}
}
1.7、UDP
发短信:不需要连接,需要知道对方地址。
发送端发送消息:
public class UdpClientDemo01 {
public static void main(String[] args) throws Exception {
//建立一个Socket连接
DatagramSocket socket = new DatagramSocket();
//建一个包
String msg = "好好学习,天天向上";
InetAddress inetAddress = InetAddress.getByName("localhost");
int port = 9099;
//数据的长度始末 发送给谁
DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, inetAddress, port);
//发送包
socket.send(packet);
//关闭流
socket.close();
}
}
接收端接收消息:
//需要等待客户端连接
public class UdpServerDemo01 {
public static void main(String[] args) throws Exception {
//建立连接
DatagramSocket socket = new DatagramSocket(9099);
//接收数据包
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
socket.receive(packet);//阻塞接收
System.out.println(new String(packet.getData()));
socket.close();
}
}
咨询
循环发送:
public class UdpSenderDemo01 {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket(8888);
while (true){
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String msg = reader.readLine();
byte[] datas = msg.getBytes();
DatagramPacket packet = new DatagramPacket(datas,0,datas.length,
new InetSocketAddress("localhost",6666));
socket.send(packet);
if (msg.equals("bye")){
break;
}
}
socket.close();
}
}
循环接收:
public class UdpServiceDemo01 {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket(6666);
while (true){
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
socket.receive(packet);//阻塞式接收包裹
System.out.println(new String(packet.getData()));
if (packet.getData().equals("bye")){
break;
}
}
socket.close();
}
}
在线咨询,两个都可以是发送方,也可以是接收方!
1.8、URL
同意资源定位符:定位资源的,定位互联网上的每个资源。
DNS域名解析:https://www.baidu.com/ xx.xx.xx.xx
协议://ip地址:端口/项目名/资源