1.OSI模型

  a.全称:开放系统互联

  b.七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

  c.注意:OSI模型 是所谓的 理论标准

2.TCP/IP模型

  a.四层模型:应用层、传输层、网络互联层、网络接口层

        应用层——对应OSI模型中的 应用层、表示层、会话层

        传输层——对应OSI模型中的 传输层

        网络互联层——对应OSI模型中的 网络层

        网络接口层——对应OSI模型中的 数据链路层、物理层

  b.特点:①TCP是一种安全的协议,但速度没有UDP快

      ②TCP有三次握手机制,保证传输的安全性

      ③http、smtp、soap、ftp 底层指定使用TCP,被称为 TCP/IP协议簇

  c.端口号:端口号只能为 0~65535,注意前1024不准使用

       tel:23  smtp:25  ftp:21  http:80

3.Socket类

  a.客户端——消息的发起方

    ①得到要发送的消息,可以接收外部输入

String msg = new Scanner(System.in).next();

    ②得到Socket对象

Socket sc = null;
sc = new Socket("127.0.0.1",9527); //传IP地址与端口号

    ③把消息交给Socket对象——由于是发送,所以方向是输出流;发送内容可以是文本也可以是二进制数据,所以它提供的是字节流——综上,一定是OutputStream

OutputStream out = sc.getOutputStream();        //方法一
out.write(msg.getBytes());
out.flush(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(sc.getOutputStream())); //方法二
bw.write(msg);
bw.flush();

    ④在finally块中关闭通道

if(sc != null){
try {
sc.close();
} catch (IOException e) {
e.printStackTrace();
}
}

  b.服务端

    ①创建服务器监听器

ServerSocket server = null;
server = new ServerSocket(9527);

    ②开始监听

while(true){
Socket socket = server.accept(); //accept会进入阻塞状态,一旦有消息发送过来,就返回Socket对象
//④开启子线程进行消息处理
new ProcessThread(socket);
}

    ③在finally块中关闭通道

if(server != null){
try {
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}

    ④在子线程中,从Socket的InputStream取数据

public void run() {
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg = br.readLine();
System.out.println("接收的消息:" + msg);
} catch (IOException e) {
e.printStackTrace();
} finally{
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
} }
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }

    

    

       

Java 之 网络编程的更多相关文章

  1. 二十三、Java基础--------网络编程

    Java中另一个重要技术就是网络编程了,为了更好的学习web方向的知识,有必要对java之网络编程好好学习,本文将围绕网络编程技术进行分析. 常见的网络协议:UDP.TCP UDP 1. 将数据源和目 ...

  2. JAVA的网络编程

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  3. Java Socket 网络编程心跳设计概念

    Java Socket 网络编程心跳设计概念   1.一般是用来判断对方(设备,进程或其它网元)是否正常动行,一 般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉.用于 ...

  4. 20145325张梓靖 实验五 "JAVA的网络编程"

    20145325张梓靖 实验五 "JAVA的网络编程" 实验内容 使用 JVAV语言 进行网络编程 对明文进行加密 设计过程 我完成的是客户端,服务端同伴 20145308刘昊阳 ...

  5. 【转】JAVA之网络编程

    转自:火之光 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者 ...

  6. JAVA的网络编程【转】

    JAVA的网络编程[转] Posted on 2009-12-03 18:04 火之光 阅读(93441) 评论(20) 编辑 收藏 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能, ...

  7. Java面向对象 网络编程 下

    Java面向对象 网络编程  下 知识概要:                   (1)Tcp 练习 (2)客户端向服务端上传一个图片. (3) 请求登陆 (4)url 需求:上传图片. 客户端:   ...

  8. Java面向对象 网络编程 上

     Java面向对象 网络编程 上 知识概要:                     (1)网络模型 (2)网络通讯要素 (3)UDP TCP 概念 (4)Socket (5)UDP TCP 传输 ...

  9. Java基础——网络编程(二)

    一.套接字 Socket 网络驱动程序提供给应用程序编程的接口和一种机制,可以比喻成一个港口码头 应用程序只要把货放在这,就算完成了货物的运送.它在应用程序中创建,通过一种绑定机制与驱动程序建立关系, ...

  10. java基础-网络编程(Socket)技术选型入门之NIO技术

    java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...

随机推荐

  1. mysql 函数在源码中的定义

    大牛那海蓝蓝 MySQL提供了较为丰富的SQL语句,用以支持MySQL提供的主要功能.在数据库内部,MySQL又是怎么知道自己能够处理哪些对象.处理哪些事情的? 如果我们输入一条SQL语句,MySQL ...

  2. Docker container network configuration

    http://xmodulo.com/networking-between-docker-containers.html How to set up networking between Docker ...

  3. uboot源码解析

    实例:1.3.4版本at91sam系列 GPIO部分: 一.初始化: include\asm-arm\arch-at91sam9\gpio.h 1.同一引脚的复用设置 2.输入输出初始化寄存器 3.得 ...

  4. ThinkPHP函数详解:N方法

    N方法属于计数器方法,被用于核心的查询.缓存统计的计数和统计.但是其实可以用于应用的其他计数用途,用法比较简单,调用格式:N('计数位置'[,'步进值'])例如,我们要统计页面中的查询次数,可以用 N ...

  5. sql语句中left join、 inner join的使用

    转自:http://blog.csdn.net/winter3125/article/details/5032871 table a(id, type): id    type ----------- ...

  6. Java联网技术之一TCP

    最近突然对java网络编程编程这一块非常感兴趣,于是找了很多资料,一点点的尝试,下面是自己的一点小见解,不喜勿喷,欢迎指正. 首先说说客户端和服务器端吧, 如果是网页的话,客户端通过网页的链接对服务器 ...

  7. CentOS 6.4安装OpenOffice

    终端依次输入: (1)sudo yum install openoffice.org-writer (2) sudo  yum install openoffice.org-calc (3) sudo ...

  8. SVN的那些事

    1,终端报错:is too old (format 29) to work with client version '1.9.4 (r1740329)' (expects format 31). Yo ...

  9. iOS9 UITableViewCell separatorInset设置为0分割线还是没有顶到头的问题

    只需要在自定义的Cell中添加以下代码即可 override func awakeFromNib() { super.awakeFromNib() layoutMargins = UIEdgeInse ...

  10. html表单 第四节

    实例: <html> <head> <title>表单实例</title> </head> <body> <center& ...