十一 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 ...
随机推荐
- 2016-2017学年第三次测试赛 习题E 林喵喵算术
时间限制: 1 Sec 内存限制: 128 MB 提交: 70 解决: 25 提交统计讨论版 题目描述 给你两个八进制数,你需要在八进制计数法的情况下计算a-b. 如果结果为负数,你应该使用负号代 ...
- codeforces Round #611
这种凌晨场真的折寿 就过了四题,8wa结尾心态炸裂,求别被hack,再hack就要爬了 A2 B8 C38(1) E1:58(7) D题感觉可以写,但是没有时间看了.幸好E最后发现了自己的 ...
- Atcoder Grand Contest 039C(容斥原理,计数DP)
//每次操作相当于将最低位取反加到最高位(N~1位)#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace s ...
- scrapy 和 scrapy-redis
1.scrapy 是一个 Python 爬虫框架,爬取效率极高,但是不支持分布式.而 scrapy-redis 时一套基于 redis 数据库.运行在 scrapy 框架之上的组件,可以让 scrap ...
- 基于贝叶斯模型和KNN模型分别对手写体数字进行识别
首先,我们准备了0~9的训练集和测试集,这些手写体全部经过像素转换,用0,1表示,有颜色的区域为0,没有颜色的区域为1.实现代码如下: # 图片处理 # 先将所有图片转为固定宽高,比如32*,然后再进 ...
- 机器学习之SVM多分类
实验要求数据说明 :数据集data4train.mat是一个2*150的矩阵,代表了150个样本,每个样本具有两维特征,其类标在truelabel.mat文件中,trainning sample 图展 ...
- 小程序使用scroll-view横向滑动时,flex布局失效问题
最近在完善以前项目,类目增多,需要进行横向滑动 实现方法1 可以在外盒子scroll-view使用white-space: nowrap来禁止子盒子换行,子盒子使用display: inline-bl ...
- Linux 添加新磁盘 && 创建分区 && 挂载
参考: 挂载目录 分区:https://blog.csdn.net/arenn/article/details/78866251 挂载:https://www.jb51.net/article/108 ...
- LeetCode 24. Swap Nodes in Pairs(交换链表中每两个相邻节点)
题意:交换链表中每两个相邻节点,不能修改节点的val值. 分析:递归.如果以第三个结点为头结点的链表已经两两交换完毕(这一步递归实现---swapPairs(head -> next -> ...
- 各种STL的基本用法
目录 STL及一些常用函数的基本用法 1.vector(向量)的基本用法 2.queue(队列)的基本用法 3.stack(栈)的基本操作 4.set(集合)的基本用法 5.map(映射)的基本用法 ...