一、  计算机网络:

将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来
在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统

二、   网络编程:

就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。

三、  网络编程3要素:IP、端口号、协议

网络编程3要素之IP:

  • 每个设备在网络中的唯一标识,每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。
  • ipconfig:查看本机ip
  • ping:测试两端之间是否能通信
  • 本地回路地址:127.0.0.1,自己给自己发数据
  • 广播地址:255.255.255.255是广播地址
  • ipv4:4个字节组成,4个0~255的
  • ipv6:8组,每组4个16进制数

网络编程3要素之端口号:

  • 每个程序在设备上的唯一标识
  • 每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上 ,还要明确发到哪个程序
  • 端口号范围:0~65535
  • 编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。

常用端口号:

  • mysql:3306
  • oracle:1521
  • web:80
  • tomcat:8080
  • qq:4000

网络编程3要素之协议:    为计算机中进行数据交换而建立的规则、标准或约定的集合

UDP:
     面向无连接。数据不安全,速度快,不区分客户端和服务端,例如QQ聊天,发短信。
 TCP:
     面向连接(三次握手),数据安全,速度略低,分为客户端和服务端。
     三次握手:客户端向服务端发起请求,服务端响应请求,传输数据       
                     第一次向服务器发送请求,第二次是响应,第三次是传输数据

四、Socket通信原理图解

Socket套接字概述:
    网络上具有唯一标识的ip地址和端口号组合在一起才能构成唯一能识别的标识符套接字。
    通信的两端都有Socket
    网路通信其实就是Socket间的通信。
    数据在两个Socket之间通过IO流传输
    Socket在应用程序中创建,用过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和Port

五、UDP传输

发送Send
       创建DataGramSocket:端口号
       创建DatagramPacket:指定数据,长度,地址,端口
       使用DatagramSocket发送DatagramPacket
       关闭DatagramSocket

接收Receive  
     * 创建DatagramSocket
     * 创建DatagramPacket,指定数组,长度
     * 使用DatagramSocket接收DatagramPacket
     * 关闭DatagramSocket
     * 从DatagramPacket中获取数据

六、UDP传输多线程

定义两个类Send和Receive继承Thread
       发送和接收在同一个窗口完成

七、Tcp编程

1.客户端:
      创建Socket连接服务器(指定ip,端口号),通过IP找到相应的服务器
      调用Socket的getInputStream()和getOutputStream()方法获得服务端相连的IO流
      输入流可以读取服务端输出流写出的数据,输出流可以写出数据到服务端的输入流
  2.服务端
     创建ServerSocket(指定端口号)
     调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket  
     调用Socket的getInputStream()和getOutputStream()方法获得和客户端相应的IO流

3.使用BufferedReader和PrintStream

十一 Socket编程的更多相关文章

  1. linux网络编程之socket编程(十一)

    今天继续学习socket编程,这次主要是学习超时方法的封装,内容如下: ①.alarm[不常用,了解既可] 它的实现思路是这样的: 但是这种方案有一定的问题,因为闹钟可能会作为其它的用途,这时所设置的 ...

  2. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

  3. 十三python基础之socket编程

      阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现 ...

  4. python学习------socket编程

    一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...

  5. python基础之socket编程

    一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现象 十 什么是 ...

  6. python基础之socket编程 (转自林海峰老师)

    python基础之socket编程   阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 ...

  7. Py修行路 python基础 (二十四)socket编程

    socket编程 一.客户端/服务端架构 客户端/服务端架构 即C/S架构,包括:1.硬件C/S架构,2.软件C/S架构. 互联网中处处都是C/S架构,学习socket 就是为了完成C/S架构的开发. ...

  8. linux网络编程之socket编程(十)

    今天继续socket编程的学习,最近晚上睡觉都没有发热,没有暖气的日子还是种煎熬,快乐的十一也已经走来,幸福有暖气的日子也快啦,好了,回到正题~ ①close终止了数据传送的两个方向. ②shutdo ...

  9. Python学习之路15☞socket编程

    一 客户端/服务器架构 即C/S架构,包括 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二 os ...

随机推荐

  1. 到底是哪个“O”管理内部人员风险?

    导读 俗话说,家和万事兴.与之相对的,家不睦则必自败.同理,如果缺乏明确的领导,内部人员风险管理项目或内部人威胁项目 (ITP) 也将走向失败. 俗话说,家和万事兴.与之相对的,家不睦则必自败.同理, ...

  2. 【SSM】Log4j 日志配置

    1.log4j.properties ### 配置根 ### # log4j.rootLogger = debug,console ,fileAppender,dailyRollingFile,ROL ...

  3. CSS - 精灵Sprite

    1. CSS精灵是一种处理网页背景图像的方式. 2. 它将一个页面涉及到的所有零星背景图像都集中到一张大图中去,然后将大图应用于网页,这样,当用户访问该页面时,只需向服务发送一次请求,网页中的背景图像 ...

  4. 记一次RocketMQ源码导入IDEA过程

    首先,下载源码,可以官网下载source包,也可以从GitHub上直接拉下来导入IDEA.如果是官网下载的source zip包,直接作为当前project的module导入,这里不赘述太多,只强调一 ...

  5. Web--TypeConverter

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. MySQL更改默认的root账户密码

    编辑mysql的配置文件:my.ini(在MySql安装目录下). 打开配置文件,在文件最后一行添加:skip-grant-tables,然后保存退出 意思为就是在启mysql时不启动grant-ta ...

  7. 「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

    前言 有的时候,配置信息是我们无法在开发过程中就能确定的.比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等.这时候,就需要把配置文件放在外面,让用户自定义配置部 ...

  8. Python环境搭建-1 Python介绍

    Python翻译成汉语是蟒蛇的意思,并且Python的logo也是两条缠绕在一起的蟒蛇的样子,然而Python语言和蟒蛇实际上并没有一毛钱关系. Python语言是由荷兰程序员Guido van Ro ...

  9. Python的常用库

    读者您好.今天我将介绍20个属于我常用工具的Python库,我相信你看完之后也会觉得离不开它们.他们是: Requests.Kenneth Reitz写的最富盛名的http库.每个Python程序员都 ...

  10. MCM(矩阵链乘法)

    这是<算法导论>动态规划中的一个问题.问题简述如下:我们在求解矩阵相乘时通常会有一个最优括号方案来对矩阵进行顺序相乘,这样会减少大量的计算时间. 我们知道矩阵A.B相乘,只能是当矩阵A的列 ...