1、网络的大致结构

  

2、网络编程

通过直接或间接地使用网络通讯的协议实现计算机与计算机之间的通讯。在TCP/IP协议层主要麦网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台机。

3、通过TCP/IP制作的网络应用软件的结构

(1)CS结构(Client---Service)

Client客户端------(TCP/IP协议)-------Service服务器端

  eg:QQ      王者荣耀游戏软件客户端

  优点:无需记网址

  缺点:需要安装客户端,占内存,安装过程繁琐,需要手动更新

(2)BS结构(Browser------Service)

Browser浏览器-------(http协议(TCP/IP协议的升级))-----Service服务器(web服务器)

  eg:百度

  优点:无需安装客户端,无需更新,直接从官网J进入

  缺点:要记网址

4、TCP和UDP的区别

TCP:可靠的传输协议,点对点的传输,类似于视频聊天,微信点对点的聊天。TCP传输的时候没有大小的限制。

UDP:不可靠的网络传输协议,类似于广播。使用UDP传输数据时有大小的限制,每个被传输 的数据必须限定在64kb之内。

5、基于URL的编程

URL(Uniform Resource Locator)---一一致资源定位器

表示Internet上某一资源的地址,通过URL可以访问Internet上的各种网络资源。

URL的写法:

协议的名称://资源的地址

http:不安全,无加密

https:安全,加密,涉及到支付功能都会用https

基于URL的java的网络编程:

java程序----(通过URL)------获取资源

java中对于网络编程的包在java.net中

分析:

    资源----------------(读取到)----------内存中

package URL;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL; public class URLTest { public static void main(String[] args) {
//第一步,创建URL对象
try {
URL url=new URL("http://www.baidu.com/");
//把url指向的文件或数据转换成内存中的流
try {
InputStream inputStream=url.openStream();
//法1、用字节读取
/*byte[] bytes=new byte[inputStream.available()];
inputStream.read(bytes);
String str=new String(bytes);
System.out.println("读取的数据:"+str);
inputStream.close();*/ //法2、如果用BufferedReader读取
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
String content;
while((content=reader.readLine())!=null){
System.out.println(content);
}
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }

6、Socket的网络编程

(1)本质:基于TCP/IP协议的模型,实现的是网络的通讯

(2)服务器端的Socket----  ServerSocket

     客户端的Socket------Socket

     大致的实现步骤:

(a)创建Socket

(b)打开连接到Socket的输入/输出流

(c)按照一定的协议对Socket进行读/写的操作

(d)关闭Socket

package Socket;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; public class MyChatServer {
public static final String ADDRESS="127.0.0.1";
public static final int PORT=20019;
public static void main(String[] args) {
//第一步:构建Socket对象
try {
//监听的是本机上的端口号
ServerSocket serverSocket=new ServerSocket(PORT);
System.out.println("开始监听服务器发来的请求");
//表示监听的对象
Socket socket=serverSocket.accept();//线程阻塞的方法
//获取socket传过来的数据流
InputStream inputStream=socket.getInputStream();
//把数据打印出来
DataInputStream dataInput=new DataInputStream(inputStream) ;
String str;
System.out.println("从客户端传过来的数据");
while((str=dataInput.readUTF())!=null){
System.out.println(str);
}
System.out.println("从客户端传来的数据完毕");
OutputStream outStream=socket.getOutputStream();
DataOutputStream dataout=new DataOutputStream(outStream); //给客户端发送的数据
System.out.println("写给客户端的话");
Scanner sc=new Scanner(System.in);
String strcontent=sc.next();
dataout.writeUTF(strcontent);
System.out.println("通讯完毕");
socket.shutdownInput();//关流
socket.shutdownOutput();
socket.close(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
package Socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner; import javax.xml.stream.util.StreamReaderDelegate; public class MyChatClient { public static void main(String[] args) { try {
//表示客户端连接的主机的地址
Socket socket=new Socket(MyChatServer.ADDRESS,MyChatServer.PORT);
System.out.println("客户端连接服务器成功");
System.out.println("请输入想服务器发送的内容");
OutputStream outStream=socket.getOutputStream();
//把数据打印出来
DataOutputStream outWriter=new DataOutputStream(outStream) ;
//给服务端发送的数据
System.out.println("写给服务器的话");
Scanner sc=new Scanner(System.in);
String strcontent=sc.nextLine();
outWriter.writeUTF(strcontent);
//接收服务端发来的数据
InputStream inputStream=socket.getInputStream();
//把数据打印出来
DataInputStream dataRead=new DataInputStream(inputStream) ;
String str;
System.out.println("服务器传来的数据");
while((str=dataRead.readUTF())!=null){
System.out.println(str);
}
System.out.println("从服务器传过来的数据完毕");
System.out.println("通讯完毕");
socket.shutdownInput();
socket.shutdownOutput();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

网络应用软件结构-----CS与BS结构(网络基本知识小结)的更多相关文章

  1. 什么是CS和BS结构,两种结构的区别

    什么是CS和BS结构,两种结构的区别 什么是C/S和B/S结构?         C/S又称Client/Server或客户/服务器模式.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系 ...

  2. 1.cs与bs结构

    ####CS 与 BS 结构 C/S 结构软件:客户端(Client)服务器(Server)软件,客户端需要单独下载安装之后,才能正常操作的软件 B/S 结构软件:浏览器(Browser)服务器(Se ...

  3. 容器化之路Docker网络核心知识小结,理清楚了吗?

    Docker网络是容器化中最难理解的一点也是整个容器化中最容易出问题又难以排查的地方,加上使用Kubernets后大部分人即使是专业运维如果没有扎实的网络知识也很难定位容器网络问题,因此这里就容器网络 ...

  4. CS 和 BS 的区别和优缺点

    通俗来讲: bs是浏览器(browser)和服务器(server) cs是静态客户端程序(client)和服务器(server) 区别在于,虽然同样是通过一个程序连接到服务器进行网络通讯,但是bs结构 ...

  5. CS 和 BS 的区别和优缺点(转)

    转自:http://www.cnblogs.com/scnuyz/p/5808808.html bs是浏览器(browser)和服务器(server) cs是静态客户端程序(client)和服务器(s ...

  6. Java和.Net在做BS结构项目的比较

    渊源: Java的J2EE在1999年形成了其成熟的架构,并且到今天已经有相当成熟的经过检验的企业应用系统.而.Net究其渊源是源自微软以前开发企业应用程序的平台DNA(DistributedNetw ...

  7. 深入理解BS结构应用程序

    随着学习的深入,和编程经验的丰富,对BS应用程序有一些认识. 在一些讨论软件技术的QQ群里,或一些社区.BBS中,经常会有一些初学者会犯一些认知性的错误.比如经常会有一些朋友提这样的一些问题:“我怎么 ...

  8. 一文明白所谓的CS与BS设计模式

    CS设计模式 概念:CS设计模式,C代表的是Client,S代表的是Server.正如图中的所示,是客户机与服务器之间的交互.这种交互在早期的软件系统中,大多数都是采用这种模式,通过将任务合理分配到C ...

  9. Java 网络编程(一) 网络基础知识

    链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951826.html 网络基础知识 网络编程的目的:直接或间接地通过网络协议与其他计算机 ...

随机推荐

  1. Resharper 8.2的“安装”问题

    概述 完美解决Resharper 8.2的“安装”问题和VS2012写Javascript语句无法智能提示的问题: 目录 引言——Resharper 简介——安装——VS2012智能提示测试 引言 最 ...

  2. linux与python

    linux一般都装有python,但是版本不一定,需要自己查看,如果版本过低,需要重装.查看python版本方法,直接在命令行输入 python,此时会进入python命令行,同时会显示python版 ...

  3. iOS 倒计时NSTimer

    项目中可能会遇到有些倒计时的地方 比方 手机验证的时候,验证码一般都会有一个时间限制,此时在输入验证码的地方就须要展示一个倒计时 详细实现方式是使用了iOS 自带的 NSTimer 上代码 首先新建 ...

  4. mysql + php 中文乱码 全是? 解决方法

    在my.ini文件中找到[client]和[mysqld]字段,在下面均加上default-character-set=utf8,保存并关闭,重启服务器 在window下重启失败,这是因为你安装了高版 ...

  5. nyoj84 阶乘的0

    阶乘的0 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 计算n!的十进制表示最后有多少个0 输入 第一行输入一个整数N表示測试数据的组数(1<=N<=1 ...

  6. Canvas学习笔记——缓动

    当你驾车在高速公路上行驶时,速度是很快的,而快到收费站时,则开始减速直到停下.将这个例子转换成物理模型就是当物体向终点运动时,开始速度会很快,而在快要到达终点时,速度会逐渐放缓直至0,整个运动过程就是 ...

  7. VMware安装ubuntu学习笔记(只是笔记)

    VMware安装ubuntu开机黑屏/死机 1- Edit Ubuntu VM Configuration file (.vmx) 2- Add the following line cpuid.1. ...

  8. 无线(仅WIFI)攻击思路总结

    从事信息安全相关工作5年了,虽然主要工作是安全产品售前.安全服务等方向,但既然选择了安全,想必都是有点黑客情节的,因此也前前后后杂七杂八的学了点东西.最近在研究无线(主要是WIFI)安全,相关书籍看了 ...

  9. ffmpeg ffplay播放延时大问题:播放延时参数设置

    使用ffplay播放视频源时,rtsp/rtmp等,会有一定的延时,这里我们可以通过设置ffplay播放参数将延时控制到最小. ffplay.exe -i rtmp://xxxxxxx -fflags ...

  10. openstack之路:KVM/Libvirt 安装

    openstac是一个开源的计算机平台,利用虚拟化和底层存储服务提供云计算服务.openstack的基本是虚拟化技术.虚拟化技术采用的KVM.我们首先进行KVM软件的安装. 电脑配置: 内存:8G 硬 ...