您的位置:首页 > 理论基础 > 计算机网络

黑马程序员-----网络编程

2014-10-17 10:23 288 查看
              -----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

 网络编程

  网络编程主要是针对网页上的应用程序来编写的一些嵌入式程序。比如说JSP动态网页,就是在网页中结合了JAVA的APPLET编程技术的网页。主要应用语言为JAVA。平时在网上浏览的各式各样的精美网页,以及经常登录的一些常用网站以及网站上的一些精美的特效等,这些都是应用的网络编程的知识来实现的。

基本定义

网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用,编程人员可以不用考虑……

网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的!中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理!

代码,开发工具,数据库,服务器架设和网页设计这5部分你都要接触。

网络模型

网络模型:描述网络的结构原理和工作原理

OSI参考模型:七层

Internet网络模型:四层

网络协议:指定层上进行数据交换的规则。

Internet的网络层协议:IP协议;DNS协议(辅助协议)

Internet的传输层协议:TCP协议;UDP协议。

套接字

套接字(Sockets):应用程序和网络协议的接口。

JavaSockets:Java应用程序和网络协议的接口,提供若干个类的定义。

Java应用程序利用这些类继承网络协议的行为,实现网络通信。

TCPSockets:使用TCP协议实现可靠的网络通信。

UDPSockets:使用UDP协议实现效率较高的网络通信。

数据包

数据包是网络通信编程的一个重要概念,也称为组装包,指在应用层数据或报文按照一定事先规定好的规则整合的数据集合,实际操作包括组包(打包),数据包传送,解包。组包(打包),指按照协议把零散的数据或报文按照组合起来,实际应用中,比如在C++编程中,往往定义一种新的数据类型用来存储数据包的结构。数据包传送,指数据包的电气物理传输。解包,指接收端对接收的数据进行解析,获得有用信息和数据。

数据包经常通过套接字来传送.

3编程语言

汇编语言

汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。

汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。

高级语言

高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,这些语言的语法、命令格式都各不相同。高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:

解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。

编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*.OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。大多数的编程语言都是编译型的,例如VisualC++、VisualFoxpro、Delphi等。

小例子

 

题目:上传文件,多客户端上传,并且保证不会因为文件的名称而重复!

 

客户端:

package july76net;

 

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

 

public class Demo22 {

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

Socket s = new Socket("localhost", 12036);

BufferedReader br = new BufferedReader(new FileReader("E:/你好.txt"));

PrintWriter pw = new PrintWriter(s.getOutputStream(),true);

BufferedReader br2 = new BufferedReader(new InputStreamReader(s.getInputStream()));

String line;

while((line = br.readLine()) != null){

pw.println(line);

}

s.shutdownOutput();

String str = br2.readLine();

System.out.println(str);

s.close();

}

}

 

服务器端:

package july76net;

 

import java.io.BufferedReader;

import java.io.File;

import java.io.FileWriter;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

 

 

class MyUpdate implements Runnable{

private Socket s;

 

public MyUpdate(Socket s) {

super();

this.s = s;

}

 

@Override

public void run() {

String ip = s.getInetAddress().getHostAddress();

System.out.println(ip+".........connected!");

int count = 0;

try {

BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));

File file = new File("E:/");

File f = new File(file,"你好"+count+".txt");

while(f.exists()){//如果写成if,就不可以!

f = new File(file,"你好"+(++count)+".txt"); 

}

PrintWriter pw = new PrintWriter(new FileWriter(f),true);

PrintWriter pw2 = new PrintWriter(s.getOutputStream(),true);

String line;

while((line = br.readLine()) != null){

pw.println(line);

}

pw2.println("恭喜您,上传成功!");

s.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

 

public class Demo23 {

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

ServerSocket ss = new ServerSocket(12036);

while(true){

Socket s = ss.accept();

new Thread(new MyUpdate(s)).start();

}

}

}

                  -----------android培训java培训、java学习型技术博客、期待与您交流!------------ 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: