网络编程简单学习
创始人
2024-04-15 08:38:41
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是开启的

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

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

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

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...