一、  计算机网络:

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

二、   网络编程:

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

三、  网络编程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. ES-9200端口与9300端口

    (1)Elasticsearch是基于lucene的全文检索服务器 (1)9300:ES节点之间的通讯使用 (2)9200:ES节点和外部通讯使用

  2. zigbee学习基础

    应用场合:功耗(休眠)以及自组网(动态路由,梯度法寻径)是其特点.距离短.功耗低且传输速率不高的各种电子设备之间进行有周期性数据.间歇性数据和低反应时间数据传输的应用(智能家居/仓储中转/伞兵落地协同 ...

  3. 研发2nm芯片,台积电如何做到天下第一?

    日前,台积电宣布,正式启动2nm芯片工艺的研发,工厂将会设置在台湾新竹的南方科技园,预计2024年投入量产,发言人称:2nm工艺是一个重要节点,目标是比3nm制程缩小23%.科技先锋总会打脸分析专家, ...

  4. 【降维】主成分分析PCA推导

    本博客根据 百面机器学习,算法工程师带你去面试 一书总结归纳,公式都是出自该书. 本博客仅为个人总结学习,非商业用途,侵删. 网址 http://www.ptpress.com.cn 目录: PCA最 ...

  5. python第一章 python基础编程

    第一次学习python 首先python对于我来说是我学习的第三门语言,之前大一学习过了c和c++这两门语言. 接触一个新语言,首先应该的是搭载一下编译的环境.我们是老师给我们上传了的python3安 ...

  6. 企业行业分类数据库JSON

    这篇文章主要介绍了 企业信息中选择行业类型,常用在企业注册,入驻填写企业信息等. JSON: [{"id":1001,"name":"IT服务&quo ...

  7. 01初步启动Hadoop服务

    1.rz命令将hadoop压缩包上传至Linux服务器中 2.tar -zxvf hadoop-2.7.7.tar.gz(解压即可用) 3.将解压出来的hadoop移到想要放的位置 mv hadoop ...

  8. 学习笔记(3)- BioASQ

    本次目的是验证BioBERT在QA的效果. A challenge on large-scale biomedical semantic indexing and question answering ...

  9. onContextItemSelected 与 onMenuItemSelected 的那些事

    Android 的activity中onCreateOptionsMenu onMenuItemSelected onOptionsItemSelected onCreateContextMenu o ...

  10. 跳转连接转base64

    //配置H5连接 @Value("${h5.domain}") private String h5Domain; // 校验商家端权限 public String checkSta ...