协议使用场景:  udp协议(User Datagram Protocol)  即时通讯类的软件 :qq 微信 飞信 歪歪  tcp协议(Transmission Control Protocol)  发邮件\文件的时候
TCP协议:  面向连接\可靠\慢\对传递的数据的长短没有要求  两台机器之间要想传递信息必须先建立连接  之后在有了连接的基础上,进行信息的传递  可靠 : 数据不会丢失 不会重复被接收  慢 : 每一次发送的数据还要等待结果

import socketsk = socket.socket()
sk.bind(('127.0.0.1',9001))
sk.listen()
while True:conn,addr = sk.accept()   while  True:msg = input('>>>')conn.send(msg.encode('utf-8'))if msg.upper() == 'Q':breakcontent = conn.recv(1024).decode('utf-8')  if content.upper() == 'Q': breakprint(content)conn.close()
sk.close()

TCP协议 server端

import socketsk = socket.socket()sk.connect(('127.0.0.1',9001))
while True:ret = sk.recv(1024).decode('utf-8')if ret.upper() == 'Q':breakprint(ret)msg = input('>>>')sk.send(msg.encode('utf-8'))if msg.upper() == 'Q':breaksk.close()

TCP协议 client端

  当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。

在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。

序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。

确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。

确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效

同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。

终止FIN:用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接

PS:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号。


UDP协议:  无连接\不可靠\快\不能传输过长的数据  机器之间传递信息不需要建立连接 直接发就行  不可靠 : 数据有可能丢失

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1',9001))while True:msg,client_addr = sk.recvfrom(1024)print(msg.decode('utf-8'))content = input('>>>')sk.sendto(content.encode('utf-8'),client_addr)
sk.close()

UDP协议 server端

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
server_addr = ('127.0.0.1',9001)while True:content = input('>>>')if content.upper() == 'Q':breaksk.sendto(content.encode('utf-8'),server_addr)msg = sk.recv(1024).decode('utf-8')if msg.upper() == 'Q':breakprint(msg)
sk.close()

UDP协议 client端

 

转载于:https://www.cnblogs.com/LL97155472/p/10677701.html

网络编程---tcp/udp协议相关推荐

  1. WinSock API网络编程——TCP/IP协议详解

     WinSock API网络编程--TCP/IP协议(http://www.impcas.ac.cn/usr/lujun/browse.asp?id=winsock_tcp)            ...

  2. 网络编程(Tcp/Udp实现聊天、文件上传)

    网络编程 1.1 概述 计算机网络是指将位置不同的多台[计算机 通过通信线路连接起来,实现资源共享和信息传递的计算机系统 1.2 网络通信的要素 ip和端口 网络通信协议(tcp/udp) 1.3 I ...

  3. 编写tcp服务器发送hex格式_Android网络编程-TCP/IP协议

    在Android网络编程-计算机网络基础一文中得知,IP协议属于网络层,TCP.UDP协议属于传输层. IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的服务. TCP协议是 ...

  4. [windows网络编程]tcp/udp编程初步详解-转

    #pragma comment (lib,"ws2_32.lib") #include <Winsock2.h> #include <stdio.h> 如你 ...

  5. 网络编程---TCP/UDP套接字编程原理

    本篇介绍的是Linux下的网络编程,故有些接口是不适用于Windows的,但是具体概念和实现方法是大体一致的 本篇重在讲解原理,具体实现请戳这里->UDP套接字编程实现 介绍 网络编程套接字(s ...

  6. 大数据 -- java基础16 网络编程 TCP UDP

    1.网络编程的三要素:(1)IP地址(2)端口号(3)协议 2.IP地址 : 网络中计算机唯一标识. (1)IP地址在计算机中存储的时候是由二进制的形式进行存储的:IP:192.168.7.42 十进 ...

  7. 网络编程-tcp/udp

    Java网络编程 计算机网络就是通过传输介质.通信设施和网络协议,把分散在不同地点的计算设备互连起来,实现资 源共享和数据传输的系统. TCP/IP协议簇 TCP/IP协议栈是一系列网络协议的总和,是 ...

  8. 【Java】网络编程——TCP/UDP网络对讲机

    目录 前言 OSI概述 传输层 端口 Socket InetAddress类 UDP协议间的通信 UDP协议相关类 UDP 发送端 UDP 接收端 + 发送端 UDP 聊天 + 全局广播 UDP发送大 ...

  9. 网络编程--TCP/IP协议

    参考:https://lijie.blog.csdn.net/article/details/105297532 https://blog.csdn.net/qq_20785973/article/d ...

最新文章

  1. 最受欢迎 Top 12 Python 开源框架,你都用过吗?
  2. Commun. Biol. | 人工智能加速抗生素发现
  3. SQL语句复习【专题八】
  4. WebGL学习(1) - 三角形
  5. linux 权限模式,Linux权限模式
  6. GDIPlus灰度化图像
  7. 【渝粤题库】广东开放大学 社会学基础 形成性考核
  8. java初学者:封装 继承 多态的理解
  9. 计算机软件故障及其处理方法,计算机常见软件故障及其解决方法
  10. Mac OS系统怎么修改mac地址
  11. 2018届android校招面试总结:百度,大疆,乐视,知乎
  12. 关于ABAP中锁参数SCOPE的使用bug一粒
  13. (DFS)深度优先搜索算法详解
  14. android系统定制添加分辨率,density设置
  15. 如何在idea中使用Mysql
  16. js+css3实现鼠标控制图片旋转实现方向舵效果
  17. html中关于侧边导航栏和导航栏的编写
  18. 洛谷 P1862 输油管道问题
  19. 信号--Signal
  20. 表格导出计算机,电脑怎么导出excel表格数据-如何将百度指数数据导出到Excel表格...

热门文章

  1. input最大长度限制问题
  2. 递归调用、高阶函数、装饰器
  3. Maven学习笔记5:Maven属性、profile和资源过滤
  4. bowtie1和bowtie2的比较
  5. 追MM与23种设计模式
  6. ie浏览器修复_IE 11浏览器被爆严重漏洞,Windows系统均有中招风险!
  7. ggplot2 | 如何对连续型变量使用离散型调色板进行配色
  8. python结构_Python 项目的结构
  9. go设置后端启动_Go语言基础(十四)
  10. java 6 损坏,Java 异常处理六