网络编程简单学习
创始人
2024-03-04 12:53:28
0

目录

一、 概述

1. 什么是计算机网络?

2. 网络编程的目的

3. 需要达到什么样的效果?

二、 网络通信的两个要素

1. 通信双方地址

2. 规则:网络通信协议

三、IP地址

1. IP地址概述

2. IP地址分类

3. 域名

四、端口

五、通信协议

六、TCP实现聊天 

七、TCP文件上传实现

八、Tomcat

关于C/S与B/S的区别? 

 九、UDP

1. UDP消息发送

 2. UDP聊天实现

3. UDP实现多线程在线咨询

十、URL下载网络资源


一、 概述

1. 什么是计算机网络?

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

2. 网络编程的目的

进行信息交换、数据交换、通信

3. 需要达到什么样的效果?

  • 如何准确的定位网络上的一台(多台)主机
  • 找到了主机之后怎么进行数据传输?

二、 网络通信的两个要素

1. 通信双方地址

①IP

②端口号

2. 规则:网络通信协议

常见的协议:http、tcp、udp、ftp。。。

三、IP地址

1. IP地址概述

唯一定位一台网络上计算机

127.0.0.1:本地localhost

2. IP地址分类

  • ipv4 / ipv6

        ipv4:127.0.0.1 四个字节,0-255,总共约42亿个

        ipv6: fe80::7c35:c70b:19ee:ba00%21   128位,8个无符号整数

  • 公网 / 私网

        192.168.xx.xx :是专门给组织内部使用的

        ABCD类地址

3. 域名

域名的产生就是为了解决IP问题 

四、端口

端口表示计算机上的一个程序的进程

  • 不同的进程有不同的端口号,用来区分软件
  • 规定端口0-65535
  • UDP和TCP的端口均为0-65535
  • 端口分类:公有端口 0-1023(尽量不要使用)---- HTTP:80,https:443 ,ftp:21,Telent:23;常见的程序注册端口:1024-49151  分配给用户或者程序 ---- tomcat:8080,mysql:3306,Oracle:1521;动态端口:49152-65535 
  • 常见命令:netstat -ano(查看所有的端口);netstat -ano|findstr " "(查看指定端口);tasklist|findstr " " (查看指定端口的进程)

五、通信协议

协议:约定

网络通信协议:速率、传输码率等等、

TCP/IP协议簇:实际上是一组协议

重要协议对比

TCP:用户传输协议

  • 连接、稳定
  • 三次握手、四次挥手
  • 客户端、服务端
  • 传输完成、释放连接,效率低

UDP:用户数据报协议

  • 不连接、不稳定
  • 客户端、服务端,但是没有明确的界限
  • 无论有没有准备好都可以发送,不论对方有没有准备好

六、TCP实现聊天 

客户端

package study01;import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;//客户端
public class TcpClient {public static void main(String[] args) {Socket socket =null;OutputStream outputStream =null;try {// 1. 连接地址InetAddress serverIP = InetAddress.getByName("127.0.0.1");// 2. 创建端口号int port=9999;// 3. 创建一个socket连接socket = new Socket(serverIP,port);// 4. 发送消息outputStream = socket.getOutputStream();outputStream.write("你好".getBytes(StandardCharsets.UTF_8));} catch (Exception e) {e.printStackTrace();}finally {if(socket!=null){try {socket.close();} catch (IOException e) {e.printStackTrace();}}if(outputStream!=null){try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}}}
}

服务端

package study01;import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;//服务端
public class TcpService {public static void main(String[] args)  {ServerSocket serverSocket =null;Socket accept = null;InputStream is = null;ByteArrayOutputStream baos=null;//1. 需要创建一个地址给客户端进行连接,使用套接字,然后客户端可以通过9999连接服务端try {serverSocket = new ServerSocket(9999);//2. 等待客户端的连接accept = serverSocket.accept();//此时这里的socket就是客户端的socket//3. 读取客户端的信息is = accept.getInputStream();/** 使用管道流* */baos=new ByteArrayOutputStream();byte[] buffer=new byte[1024];int len;if((len=is.read(buffer))!=-1){baos.write(buffer,0,len);}System.out.println(buffer.toString());} catch (IOException e) {e.printStackTrace();}finally {//关闭资源if(serverSocket!=null){try {serverSocket.close();} catch (IOException e) {e.printStackTrace();}}if(accept!=null){try {accept.close();} catch (IOException e) {e.printStackTrace();}}if(is!=null){try {is.close();} catch (IOException e) {e.printStackTrace();}}if(baos!=null){try {baos.close();} catch (IOException e) {e.printStackTrace();}}}}
}

七、TCP文件上传实现

客户端

服务端

八、Tomcat

服务端

  • 自定义 S
  • tomcat作为服务端 S:Java后台开发

客户端

  • 自定义 C
  • 浏览器作为客户端 B

关于C/S与B/S的区别? 

 九、UDP

1. UDP消息发送

发送端

 【补充:最后需要关闭流】

单纯只有客户端的话是不能连接成功的!会出现错误,所以其实是还是要有一个服务端接收消息,但是客户端并不用像TCP里面一样等待连接建立成功才可以! 

接收端

 2. UDP聊天实现

发送端

接收端

3. UDP实现多线程在线咨询

发送端线程

 接收端线程

 学生端

老师端

十、URL下载网络资源

URL:统一资源定位符

 

 前提是tomcat是开启的

 这样就可以了,同样我们可以使用这个方式去网上爬取资源,比如收费歌曲等等!!!

=========================================================================

好了,最近找到工作后就有些懈怠了,现在需要重新抓起来了!!!加油哇,各位!

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...