一、  计算机网络:

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

二、   网络编程:

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

三、  网络编程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. Java面向对象编程 -4

    声明static属性 static 是一个关键字,这个关键字主要是用来定义属性和方法. static内存分析 在正常开发之中每一个对象都要保存有各自的属性 所以此时程序没有问题 但是如果country ...

  2. 学习笔记——springMVC架构

    springMVC是一个MVC模式的实现,至于具体什么是MVC大佬们写了多很详细的博文给出一些链接: 链接1. SpringMVC框架“简单”执行流程 1.首先用户(或浏览器)发送请求到服务端. 2. ...

  3. P4710 平抛运动

    题目:https://www.luogu.org/problemnew/show/P4710 $$ v_x = v_{x_0} = v \ sin \ \theta, \  v_y = v_{y_0} ...

  4. ArrayStack(栈)

    顺序栈即数组型的栈.什么是栈呢?简单来说就像一个刚好装的下乒乓球大小的球筒,假设不能暴力打开球筒且只有一端有出口,那你放入或取出里面的球的操作都只能在一端进行,并且把球放进去或取出来都是由顺序决定的, ...

  5. FFplay 命令

    1. 查看支持的格式: ffplay.exe -formats 2. 播放PCM裸流: ffplay.exe - -channels -f s16le -i pcm_file_path 根据PCM文件 ...

  6. DB开启 Service Broker,使用消息队列

    ALTER DATABASE [DBNAME] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;; ALTER DATABASE [DBNAME] SET TRUS ...

  7. 读取npz,并显示图像

    import numpy as npimport osimport matplotlib.pyplot as pltimport sysimport cv2 a = np.load('/home/wg ...

  8. 阿里云Centos7安装mysql5.7

    下载mysql安装包 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 安装mysql yum -y ...

  9. 对象和Map转化gongju

    package czc.superzig.modular.utils; import java.lang.reflect.Field; import java.util.HashMap; import ...

  10. 最大流EK板子

    #include <bits/stdc++.h> using namespace std; ; const int INF=0x7fffffff; typedef long long ll ...