1.协议
http、smtp、dns、ftp、ssh、snmp、icmp、dhcp....等具体自查

2.OSI七层
应用、表示、会话、传输、网络、数据链路、物理

3.socket:

对所有上层协议的封装

4.socket常用功能
1)sk.bind(address)

  s.bind(address) 将套接字绑定到地址。address地址的格式取决于地址族。在AF_INET下,以元组(host,port)的形式表示地址。

2)sk.listen(backlog)

  开始监听传入连接。backlog指定在拒绝连接之前,可以挂起的最大连接数量。

backlog等于5,表示内核已经接到了连接请求,但服务器还没有调用accept进行处理的连接个数最大为5这个值不能无限大,因为要在内核中维护连接队列

3)sk.setblocking(bool)

  是否阻塞(默认True),如果设置False,那么accept和recv时一旦无数据,则报错。

4)sk.accept()

  接受连接并返回(conn,address),其中conn是新的套接字对象,可以用来接收和发送数据。address是连接客户端的地址。接收TCP 客户的连接(阻塞式)等待连接的到来

5)sk.connect(address)

  连接到address处的套接字。一般,address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。

6)sk.connect_ex(address)

  同上,只不过会有返回值,连接成功时返回 0 ,连接失败时候返回编码,例如:10061

7)sk.recv(bufsize[,flag])

  接受套接字的数据。数据以字符串形式返回,bufsize指定最多可以接收的数量。flag提供有关消息的其他信息,通常可以忽略。

8)sk.recvfrom(bufsize[.flag])

  与recv()类似,但返回值是(data,address)。其中data是包含接收数据的字符串,address是发送数据的套接字地址。

9)sk.send(string[,flag])

  将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小。即:可能未将指定内容全部发送。

10)sk.settimeout(timeout)

  设置套接字操作的超时期,timeout是一个浮点数,单位是秒。值为None表示没有超时期。一般,超时期应该在刚创建套接字时设置,因为它们可能用于连接的操作(如 client 连接最多等待5s )

11)sk.sendto(string[,flag],address)

  将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。该函数主要用于UDP协议。

12)sk.getpeername()

  返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。

13)sk.getsockname()

  返回套接字自己的地址。通常是一个元组(ipaddr,port)

14)sk.fileno()

  套接字的文件描述符

注:上述功能借鉴于博客https://www.cnblogs.com/aylin/p/5572104.html此博客描述非常详细推荐移步查阅

练习

客户端

import socket

client = socket.socket()     #声明socket类型,同时生成socket连接对象

client.connect(('localhost',6565))

client.send(b'holle world!')           #传送数据只能用byte类型
data = client.recv(1024) #一次接受的量为1024
print('recv:',data) client.close()

服务端

import socket

server = socket.socket()
server.bind(('localhost',6565))

server.listen() #监听

conn,addr = server.accept() #等待

data = conn.recv(1024)
print('recv:',data)
conn.send(data.upper()) #返回数据

server.close()

最新文章

  1. 简单几何(直线与圆的交点) ZOJ Collision 3728
  2. .NET: 配置文件
  3. POJ 1699 Best Sequence dfs
  4. async await的前世今生
  5. javascript之闭包深入理解(一)
  6. 模板类的约束模板友元函数:template friend functions
  7. java 连接 postgresql
  8. 确定稳定的 Spring Cloud 相关环境版本
  9. win10 家庭版不支持gpedit.msc的解决办法
  10. WebService - [Debug] undefined element declaration 's:schema'
  11. Python爬虫之提取Bing搜索的背景图片并设置为Windows的电脑桌面
  12. 杨辉三角(java实现)
  13. java 遍历方法 及 数组,ArrayList,HashMap,HashSet的遍历
  14. [原]Django-issue(1)---postgresql数据库连接密码错误
  15. 【Python020--内嵌函数和闭包】
  16. Codeforces 101572 D - Distinctive Character
  17. phpstudy部署thinkPHP
  18. Linux内核同步 - spin_lock
  19. ubuntu下mysql的安装
  20. 开发者应该了解的API技术清单

热门文章

  1. luogu 1593 因子和
  2. 关于HTML与CSS与class
  3. BZOJ 1806 DP
  4. 请问具体到PHP的代码层面,改善高并发的措施有哪些
  5. update没带where,寻找问题的思路
  6. 使用 Object.create实现js 继承
  7. js浏览器下载总结(ios、and、微信、qq)
  8. Pyhton学习——Day48
  9. 使用easyui combobox初始化+在input中触发下拉框+获取值
  10. ajax简单操作,验证用户名是否可以