十一 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 ...
随机推荐
- 14.浏览器屏幕缩放bug修复
问题:浏览器缩放时,轮播图显示不全,滚动水平滚动条,发现图片缺失 解决:隐藏水平滚动条,页面都只提供垂直滚动条的需求 global.css /* 水平超出部分默认隐藏 */ #app { overfl ...
- 一、json与jsonp的使用
1.json与jsonp的引入 在ajax中 JSON用来解决数据交换问题,而JSONP来实现跨域. 备注:跨域也可以通过服务器端代理来解决; 理解:JSON是一种数据交换格式,而J ...
- HDU 1372 Knight Moves(bfs)
嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1372 这是一道很典型的bfs,跟马走日字一个道理,然后用dir数组确定骑士可以走的几个方向, ...
- 洛谷 P1241 括号序列(栈)
嗯... 题目链接:https://www.luogu.org/problem/P1241 首先这道题是栈的入门题的加强版, 不仅要你判断这个括号序列是否合法,还要你将这个序列补充完整... 一开始是 ...
- vs code插件大全
一.HTML Snippets 超级使用且初级的H5代码片段以及提示 二.HTML CSS Support 让HTML标签上写class智能提示当前项目所支持的样式 三.Debugger for C ...
- mysql update 修改多个字段and的语法问题
在MySQL里面update一条记录,语法都正确的,但记录并没有被更新... 问题语句 执行之前的记录是这样的: 执行之后的记录是这样的: 可以看到,实际上是有效果的: why? 看起来,语法是完全没 ...
- 关于Debug Assertion Failed问题
书上代码: #include<stdio.h> #include<stdlib.h> /* 提供malloc().free()函数 */ #include<string. ...
- Python - 编程技巧,语法糖,黑魔法,pythonic
参考,搬运 http://python-web-guide.readthedocs.io/zh/latest/idiom/idiom.html 待定 1. Python支持链式比较 # bad a = ...
- NSObject类的API介绍
这篇文章围绕的对象就是NSObject.h文件,对声明文件中的属性.方法进行必要的“翻译”. 该文件大致由两部分组成:NSObject协议和NSObject类. (一)NSObject协议 - (BO ...
- idea没有import project解决办法
参考:https://blog.csdn.net/zengxiaosen/article/details/52807540