十一 Socket编程
一、 计算机网络:
将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来
在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统
二、 网络编程:
就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。
三、 网络编程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编程的更多相关文章
- linux网络编程之socket编程(十一)
今天继续学习socket编程,这次主要是学习超时方法的封装,内容如下: ①.alarm[不常用,了解既可] 它的实现思路是这样的: 但是这种方案有一定的问题,因为闹钟可能会作为其它的用途,这时所设置的 ...
- python网络编程-socket编程
一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...
- 十三python基础之socket编程
阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现 ...
- python学习------socket编程
一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...
- python基础之socket编程
一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现象 十 什么是 ...
- python基础之socket编程 (转自林海峰老师)
python基础之socket编程 阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 ...
- Py修行路 python基础 (二十四)socket编程
socket编程 一.客户端/服务端架构 客户端/服务端架构 即C/S架构,包括:1.硬件C/S架构,2.软件C/S架构. 互联网中处处都是C/S架构,学习socket 就是为了完成C/S架构的开发. ...
- linux网络编程之socket编程(十)
今天继续socket编程的学习,最近晚上睡觉都没有发热,没有暖气的日子还是种煎熬,快乐的十一也已经走来,幸福有暖气的日子也快啦,好了,回到正题~ ①close终止了数据传送的两个方向. ②shutdo ...
- Python学习之路15☞socket编程
一 客户端/服务器架构 即C/S架构,包括 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二 os ...
随机推荐
- 02-15Android学习进度报告十五
今天学习了关于ListView Item多布局的实现.感觉有点困难. 何为ListView Item多布局,打个比方,QQ这种聊天列表 代码示例如下: public class MutiLayoutA ...
- 后端——框架——持久层框架——Mybatis——补充——pageHelper(分页)插件
Pagehelper插件的知识点大致可以分为三个部分 搭建环境,引入jar包,配置. 使用方式,只需要记住一种即可.类似于在写SQL语句中,可以left join,也可以right join,它们实现 ...
- i.MX RT600之I2S外设介绍及应用
恩智浦的i.MX RT600是跨界处理器产品,同样也是i.MX RTxxx系列的开山之作.不同于i.MX RT1xxx系列单片机,i.MX RT600 采用了双核架构,将新一代Cortex-M33内核 ...
- java finalize学习
1 finalize()调用的时机 与C++的析构函数(对象在清除之前析构函数会被调用)不同,在Java中,由于GC的自动回收机制,因而并不能保证finalize方法会被及时地执行(垃圾对象的回收时机 ...
- 「JSOI2014」电信网络
「JSOI2014」电信网络 传送门 一个点选了就必须选若干个点,最大化点权之和,显然最大权闭合子图问题. 一个点向它范围内所有点连边,直接跑最大权闭合子图即可. 参考代码: #include < ...
- ajax相同url和参数,将不会重复发起请求
IE浏览器下使用GET发送请求时,如果两次请求的地址和参数相同,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容. 解决办法: 一. GET请求URL后加随机 ...
- 了解jQuery
前言-- 通过这篇文章[https://www.cnblogs.com/cchHers/p/9880439.html]了解到JavaScript是编写控制器这种角色语言.文章中也提到了web开始是一门 ...
- MySQL之约束
目录 约束(CONSTRAINT) mysql中的约束有哪些? 级联操作 产生的原因: 两种级联的定义方式 约束(CONSTRAINT) 什么是约束? 是一种限制,对某一个东西的限制.例如宪法规定 ...
- Linux 修改 .bashrc
bashrc是一个隐藏的文件,要打开并修改该文件需要: (1)命令:ls -a 找到文件 .bashrc: (2) 命令 vim ~/.bashrc 进入到文件: (3) 直接按 i 键可以对文件进行 ...
- Pytorch本人疑问(1) torch.nn和torch.nn.functional之间的区别
在写代码时发现我们在定义Model时,有两种定义方法: torch.nn.Conv2d()和torch.nn.functional.conv2d() 那么这两种方法到底有什么区别呢,我们通过下述代码看 ...