1 OSI七层模型概念介绍

物理层:数据以比特的方式进行传递,典型的设备是集线器。该层主要规定了设备的电压或者端口等等一些列物理层面上的规定
数据链路层:该层数据以帧的方式进行传递,主要是两个相邻的结点之间的数据传递,典型的设备就是交换机
网络层:网络层顾名思义就是计算机网络之间的数据传递,包括子网之间。数据以包的方式传递。网络之间的路由规则等。典型的设备是路由器
传输层:该层负责端设备之间的数据传递,以可靠的形式或者不可靠的形式传递。信息的传递是报文
会话层:会话层负责进程之间的连接等一系列维护。数据的传递也是报文的形式
表示层:表示层会对数据进行处理。比如加密操作,或者压缩或者格式转化等等
应用层:确定数据的实际用途
2 TCP/IP协议

应用层 FTP  Telnet  HTTP        SNMP              DNS
传输层             TCP                     UDP
网络互联层                                       IP

主机-网络层
以太网:IEEE802.3
令牌环网:IEEE802.4
3 Echo(客户端-服务端)模型
客户端流程

客户端代码

package com.asiaInfo.caozg.ch_01;import java.io.*;
import java.net.Socket;/*** @Authgor: gosaint* @Description:* @Date Created in 21:31 2018/1/7* @Modified By:客户端代码*/
public class EchoClient {// 本机的IP地址private String host = "localhost";// 本机的端口号private int port = 8000;// socket 对象private Socket socket;// 构造器初始化Socket对象public EchoClient() throws IOException {socket = new Socket(host, port);}// 测试方法public static void main(String args[]) throws IOException {new EchoClient().talk();}private PrintWriter getWriter(Socket socket) throws IOException {OutputStream socketOut = socket.getOutputStream();return new PrintWriter(socketOut, true);}private BufferedReader getReader(Socket socket) throws IOException {InputStream socketIn = socket.getInputStream();return new BufferedReader(new InputStreamReader(socketIn));}public void talk() throws IOException {try {// 从socket读取数据BufferedReader br = getReader(socket);// 向socket写入数据PrintWriter pw = getWriter(socket);// 把控制台输入的数据转换为字符流,然后读取BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));String msg = null;while ((msg = localReader.readLine()) != null) {// 将读取的数据写出的输出流(打印流)
                pw.println(msg);System.out.println(br.readLine());if (msg.equals("bye"))break;}} catch (IOException e) {e.printStackTrace();} finally {try {socket.close();} catch (IOException e) {e.printStackTrace();}}}
}

服务端流程

package com.asiaInfo.caozg.ch_01;import java.io.*;
import java.net.*;public class EchoServer {private int port = 8000;private ServerSocket serverSocket;public EchoServer() throws IOException {serverSocket = new ServerSocket(port);System.out.println("服务器启动");}public String echo(String msg) {return "echo:" + msg;}private PrintWriter getWriter(Socket socket) throws IOException {OutputStream socketOut = socket.getOutputStream();return new PrintWriter(socketOut, true);}private BufferedReader getReader(Socket socket) throws IOException {InputStream socketIn = socket.getInputStream();return new BufferedReader(new InputStreamReader(socketIn));}public void service() {while (true) {Socket socket = null;try {socket = serverSocket.accept();  //等待客户连接System.out.println("New connection accepted "+ socket.getInetAddress() + ":" + socket.getPort());// 从socket获取输入流字符,阅读消息BufferedReader br = getReader(socket);// 向socket写出数据PrintWriter pw = getWriter(socket);String msg = null;// 阅读消息while ((msg = br.readLine()) != null) {System.out.println(msg);// 写出消息
                    pw.println(echo(msg));if (msg.equals("bye")) //如果客户发送的消息为“bye”,就结束通信break;}} catch (IOException e) {e.printStackTrace();} finally {try {if (socket != null) socket.close();  //断开连接} catch (IOException e) {e.printStackTrace();}}}}public static void main(String args[]) throws IOException {new EchoServer().service();}
}

4 Socket用法
(1):连接本机1-1024端口
该Demo的作用是练习Socket对象的创建。我们通过连接端口,表明该端口被服务器监听了。在这个区间的大多端口已经被占用,但是我们还是可以连接没有被占用的端口。

public class PortScanner{public static void main(String[] args){private String host="localhost";//本机的IP地址new PortScanner().scan(host);}public void scan(String host){Socket s=null;try{for(int port=1;port<1024;port++){// 创建socket对象s=new Socket(host,port);System.out.println("该端口没有被占用:"+port);}}catch(IOException e){Systrm.out.println("该端口被占用:"+port);}finally{try{if(s!=null)s.close;}catch(Exception e){e.printStackTrance();}}}
}

转载于:https://www.cnblogs.com/gosaint/p/8249909.html

TCP/IP以及Socket对象基本相关推荐

  1. TCP/IP、SOCKET、HTTP之间的联系与区别

    主要内容: 1.网络的七层协议 2.TCP/IP.SOCKET.HTTP简介 3.TCP连接.HTTP连接.Socket连接的区别 一.网络的七层协议 网络七层由下往上分别为物理层.数据链路层.网络层 ...

  2. java socket ip_JAVA 网络编程 TCP/IP、Socket 和协议设计

    [JAVA 网络编程 TCP/IP.Socket 和协议设计] TCP/IP 协议简介 IP 首先我们看 IP(Internet Protocol)协议.IP 协议提供了主机和主机间的通信. 为了完成 ...

  3. TCP/IP,HTTP,Socket的区别与联系

    TCP/IP,HTTP,Socket的区别与联系 网络七层:物数网传会表应.分别为物理层,数据链路层,网络层,传输层,会话层,表示层,应用层.其中,底层三层:物理层,数据链路层,网络层是网络工程师研究 ...

  4. mysql服务器是否支持tcp/ip连接,(3)MySQL客户端与服务端的TCP/IP及socket连接方式-Go语言中文社区...

    MySQL客户端与服务端的TCP/IP及socket连接方式 客户端与服务器模型 客户端与服务端模型 TCP/IP方式连接 解释说明 TCP/IP套接字方式是MySQL在任何平台下都提供的连接方式,也 ...

  5. Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程

    目录 文章目录 目录 TCP/UDP Socket 逻辑架构 创建 Socket 绑定 Socket 请求建立 Socket 连接 监听 Socket 接受请求 关闭连接 数据的发送和接收 send ...

  6. 网络协议:TCP/IP、SOCKET、HTTP

    网络七层  由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称 ...

  7. 通讯http,TCP/IP与socket之间的区别

    1.TCP/IP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在"无差别 ...

  8. TCP/IP 和 Socket 的关系

    要写网络程序就必须用Socket,这是程序员都知道的.而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,w ...

  9. http、tcp/ip、socket

    TCP/IP参考模型 从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族.不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/ ...

  10. 22-05-05 西安 javaSE(18) 网络编程、TCP\IP、Socket通信

    MAC与IP地址 MAC地址 每一块网卡带有的ROM(只读存储器)中,都预先烧录了一个唯一的MAC地址. MAC地址=制造厂商编号+产品编号 所以世界上每一个MAC地址都是独一无二的 IP地址 在互联 ...

最新文章

  1. 全球最大“同性”交友网站GitHub或被微软收购,收购价可能高达 50 亿美元
  2. 囧囧西游之大闹天宫java_《囧囧西游之大闹天宫》攻略(1)
  3. KXMovie基于ffmpeg的播放器
  4. 生活大爆炸版石头剪刀布(洛谷-P1328)
  5. Kafka核心源码解析 - LogManager源码解析
  6. python 通信中间件_Python Web框架Sanic middleware – 中间件
  7. Android查看每个线程CPU占用情况,以及工作内容分析
  8. 2022年二级c语言软件下载,二级c语言免费考试软件下载 知识兔二级c语言考试系统 v2022.3官方安装版
  9. Android多媒体功能开发(7)——使用SoundPool类播放音频
  10. 局域网计算机名和ip扫描工具,局域网IP扫描器(Advanced IP Scanner)
  11. 计算机考研408难吗?学到什么程度才能考130?
  12. 还在为挖不到漏洞烦恼?还在为如何才能升职加薪困惑?听听徐老师怎么说.........
  13. Linux- 什么是PID?
  14. 修改Win10系统文件夹C:\Users\下用户名为中文方法
  15. dismiss和remove_Android对话框之dismiss和cancel和hide区别
  16. Variation Model
  17. 【渝粤教育】电大中专金融与税收 (2)作业 题库
  18. M1 MacBook使用IE浏览器解决兼容问题
  19. google glog介绍与使用
  20. 一个大学生从月薪3500到700万和他的情感经历

热门文章

  1. Android Studio真机调试,数据库sqllite时,Multiple dex files define Landroid/support/v4/R 问题...
  2. 解决:Unable to execute dex: GC overhead limit exceeded
  3. 建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期...
  4. golang格式化输出---fmt包用法详解
  5. Unity Lighting - Choosing a Color Space 选择色彩空间(四)
  6. Spring使用经验之Listener综述
  7. Laravel 5.1 文档攻略 —— Eloquent Collection
  8. “同样的”约束,不同的位置
  9. 图解DotNet框架之三:System.IO
  10. 处理模型——找到对应一个方向的旋转角