B站【狂神说Java笔记】-网络编程

import java.io.IOException;

import java.io.InputStream;

import java.net.ServerSocket;

import java.net.Socket;

/**

  • @author by 闲言

  • @classname TcpServerDemo01

  • @description 服务器端

  • @date 2021/8/1 22:55

*/

public class TcpServerDemo01 {

public static void main(String[] args) throws Exception {

ServerSocket serverSocket = null;

Socket accept = null;

InputStream is = null;

ByteArrayOutputStream baos = null;

try {

//1. 我得有一个地址

serverSocket = new ServerSocket(9999);

//2.等待客户端连接过来

accept = serverSocket.accept();

//3.读取客户端消息

is = accept.getInputStream();

/*byte[] buf = new byte[1024];

int len;

while ((len = is.read(buf)) != -1 ){

String s = new String(buf, 0, len);

System.out.println(s);

}*/

//管道流

baos = new ByteArrayOutputStream();

byte[] buff = new byte[1024];

int len = -1;

while ((len = is.read(buff)) != -1) {

baos.write(buff, 0, len);

}

System.out.println(baos.toString());

} catch (IOException e) {

e.printStackTrace();

} finally {

if (baos != null) {

baos.close();

}

if (is != null) {

is.close();

}

if (accept != null) {

accept.close();

}

if (serverSocket != null) {

serverSocket.close();

}

}

}

}


TCP实现文件上传

客户端

package cn.bloghut.lesson02;

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

/**

  • @author by 闲言

  • @classname TcpServerDemo2

  • @description 服务端

  • @date 2021/8/1 23:25

*/

public class TcpServerDemo2 {

public static void main(String[] args) throws Exception{

//1.创建服务

ServerSocket serverSocket = new ServerSocket(9999);

//2.监听客户端连接

Socket accept = serverSocket.accept();

//3.获取输入流

InputStream is = accept.getInputStream();

//4.文件输出

FileOutputStream fos = new FileOutputStream(new File(“receive.jpg”));//接收文件就要用文件的管道流

byte[] buff = new byte[1024];

int len;

while ((len = is.read(buff)) != -1){

fos.write(buff,0,len);

}

//通过客户端我接收完毕了

OutputStream os = accept.getOutputStream();

os.write(“我接收完毕了,你可以断开了”.getBytes());

fos.close();

is.close();

accept.close();

serverSocket.close();

}

}

服务器端

package cn.bloghut.lesson02;

import java.io.*;

import java.net.InetAddress;

import java.net.Socket;

import java.net.UnknownHostException;

/**

  • @author by 闲言

  • @classname TcpClientDemo2

  • @description 客户端

  • @date 2021/8/1 23:25

*/

public class TcpClientDemo2 {

public static void main(String[] args) throws Exception {

//1.建立连接

Socket socket = new Socket(InetAddress.getByName(“127.0.0.1”), 9999);

//2.创建一个输出流

OutputStream os = socket.getOutputStream();

//3.读取文件

FileInputStream is = new FileInputStream(new File(“1.jpg”));

byte[] buff = new byte[1024];

int len;

//4.写出文件

while ((len = is.read(buff)) != -1) {

os.write(buff, 0, len);

}

//通知服务器,我已经结束了

socket.shutdownOutput();//我已经传输完了的意思

//确定服务器接收完毕,才能够断开连接

InputStream inputStream = socket.getInputStream();//接收字符、就用字节的管道流

ByteArrayOutputStream bos = new ByteArrayOutputStream();

byte[] buff2 = new byte[1024];

int len2;

while ((len2 = inputStream.read(buff)) != -1) {

bos.write(buff2, 0, len2);

}

System.out.println(bos.toString());

//5.释放资源

bos.close();

inputStream.close();

is.close();

os.close();

socket.close();

}

}


UDP

发短信,需要IP地址

发送消息

package cn.bloghut.lesson3;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

/**

  • @author by 闲言

  • @classname UdpClientDemo1

  • @description 不需要连接服务器

  • @date 2021/8/1 23:53

*/

public class UdpClientDemo1 {

public static void main(String[] args) throws Exception{

//1.建立一个Socket

DatagramSocket socket = new DatagramSocket();

//2.建个包

String msg = “你好啊,服务器”;

//3.发送给谁

InetAddress address = InetAddress.getByName(“localhost”);

int port = 9090;

DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, address, port);

//4.发送包

socket.send(packet);

}

}

接收端

package cn.bloghut.lesson3;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.ServerSocket;

/**

  • @author by 闲言

  • @classname UdpServerDemo1

  • @description TODO

  • @date 2021/8/1 23:57

*/

public class UdpServerDemo1 {

public static void main(String[] args) throws Exception{

//开放端口

DatagramSocket socket = new DatagramSocket(9090);

//接收数据包

byte[] buff =new byte[1024];

DatagramPacket packet = new DatagramPacket(buff, 0, buff.length);

socket.receive(packet);//阻塞接收

System.out.println(packet.getAddress());

System.out.println(new String(packet.getData(),0,packet.getData().length));

socket.close();

}

}

UDP 实现聊天实现

发送方

package cn.bloghut.chat;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetSocketAddress;

/**

  • @author by 闲言

  • @classname UdpSenderDemo01

  • @description 接收端

  • @date 2021/8/2 0:05

*/

public class UdpSenderDemo01 {

public static void main(String[] args) throws Exception {

//获取连接

DatagramSocket socket = new DatagramSocket(8080);

while (true) {

//准备数据

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String data = reader.readLine();

byte[] datas = data.getBytes();

DatagramPacket packet = new DatagramPacket

(datas, 0,datas.length, new InetSocketAddress(“localhost”, 6666));

//发送数据

socket.send(packet);

if (data.equals(“bye”)) {

break;

}

}

socket.close();

}

}

接收方

package cn.bloghut.chat;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

/**

  • @author by 闲言

  • @classname UdpSendReceviDemo01

  • @description 接收端

  • @date 2021/8/2 0:05

*/

public class UdpReceiveDemo01 {

public static void main(String[] args) throws Exception {

DatagramSocket socket = new DatagramSocket(6666);

while (true) {

//准备接收包裹
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
)]

[外链图片转存中…(img-ortULOXH-1711961252471)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

[外链图片转存中…(img-j31eCOb5-1711961252472)]

最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

[外链图片转存中…(img-BioMw0sN-1711961252473)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值