SOCKET编程

socket(套接字):是一个网络通信的端点,能实现不同主机的进程通信, -通过IP+端口定位对方并发送消息的通信机制

分为UDP和TCP

客户端Client: 发起访问的一-方

服务器端Server: 接受访问的一方

UDP编程

Server端流程

1.建立socket,socket是负贵具体通信的一个实例

2.绑定,为创建的socket指派固定的端口和ip地址

3.接受对方发送内容

4.给对方发送反馈,此步骤为非必须步骤

Client端流程

1.建立通信的socket

2.发送内容到指定服务器

3.接受服务器给定的反馈内容

服务器案例v01

客户端案例v02

服务器程序要求永久运行,一般用死循环处理

改造的服务器版本v03

TCP编程

面向连接的传输,即每次传输之前需要建立一个连接

客户端和服务端两个程序需要编写

Server端的编写流程

1.建立Socket负责具体通信。这个socket其实只负责接受对方的请求

2.绑定端口和地址

3.监听接入的访问Socket

4.接受访问的Socket,可以理解接受访问即建立了一个通讯的链路通路

5.接受对方的发送内容,利用接收到的Socket接受内容

6.如果有必要,给对方发送反馈信息

7.关闭链路通路

Client端流程

1.建立通信socket

2.链接对方,请求跟对方建立通路

3.发送内容到对方服务器

4.接受对方的反馈

5.关闭链接通路

Server端:

import socket

def tcp_server():

# 1、建立socket负责具体通信,这个和socket其实只负责接受对方的请求,真通信的是连接后

# socket.AF_INET:使用ipv4协议

# socket.SOCK_STREAM:使用tcp连接

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 2、绑定IP以及端口

addr = ("192.168.200.2", 1914)

sock.bind(addr)

# 3、监听接入的访问socket

sock.listen()

while True:

# 4、接受访问的Socket 可以理解接受访问即建立了一个通讯的连接通路

# accept 返回的元祖第一个元素赋值给SKT,利用接受到的socket接受内容

skt, addr = sock.accept() # 建立通道

# 5、接受对方发送的内容、利用接受到的socket接受内容

# 500 表示接受使用的buffersize

# mgs = skt.receive(500)

mgs = skt.recv(500)

# 接受到的是bytes格式内容

# 想得到str格式的,需要进行解码

msg = mgs.decode()

print(msg)

data = f'我已经收到了'

# print(data)

# 6、如果有必要、给对方反馈信息

skt.send(data.encode())

skt.close()

if __name__ == '__main__':

print("tcpstaring......")

tcp_server()

print("tcpstoping......")

client端

import socket

def tcp_client():

a = 0

while a < 100:

# 1、建立通信socket

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

addr = ("192.168.200.2", 1914)

sock.connect(addr)

data = f"{a}你好 我是client,你收到了么?"

sock.send(data.encode())

rst = sock.recv(500)

print(rst.decode())

sock.close()

a+=1

if __name__ == '__main__':

tcp_client()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持python博客。

python进程socket通信_Python Socket TCP双端聊天功能实现过程详解相关推荐

  1. python 录制web视频_Python django框架 web端视频加密的实例详解

    视频加密流程图: 后端获取保利威的视频播放授权token,提供接口api给前端 参考文档:http://dev.polyv.net/2019/videoproduct/v-api/v-api-play ...

  2. Socket通信,实现简单的双人聊天功能

    Socket通信 1.简单介绍 学习Socket也只是通过一个小例子学习的,关于Socket原理目前只是了解到是基于TCP协议,关于TCP与UDP协议区别可以去百度详情查一下他们的区别之处,大体上是传 ...

  3. python抽奖滚动界面_Python使用Tkinter实现转盘抽奖器的步骤详解

    我使用 Python 中的 Tkinter 模块实现了一个简单的滚动抽奖器,接下来继续写一个简单的转盘抽奖器. 滚动抽奖器与点名的场景相似,是从一群人中抽出中奖的人,奖品是提前确定了的,抽奖只是确定中 ...

  4. python类的命名空间_Python之关于类变量的两种赋值区别详解

    我就废话不多说了,还是直接看代码吧! # -*- coding:utf-8 -*- #面试题,写一个方法,将一行字符串中所有的单词数量统计出来 class Person(object): TAG = ...

  5. python中英文字频率_python实现统计文本中单词出现的频率详解

    本文实例为大家分享了python统计文本中单词出现频率的具体代码,供大家参考,具体内容如下 #coding=utf-8 import os from collections import Counte ...

  6. TCP协议:三次握手过程详解

    本文通过图来梳理TCP-IP协议相关知识.TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道.如图1所示,给出了TCP通信过程的示意图. 上图主要包括三部分:建立连接.传输数 ...

  7. ArrayDeque(双端队列的线性实现)详解

    ArrayDeque 是 java 中对双端队列的线性实现 一. 特性 无容量大小限制,容量按需增长: 非线程安全队列,无同步策略,不支持多线程安全访问: 当用作栈时,性能优于Stack,当用于队列时 ...

  8. python北京时间代码_python代码定时同步本机的北京时间详解

    这段python代码首先从www.beijing-time.org上获取标准的北京时间,然后同步获取的北京时间到本地 # -*- coding: utf-8 -*- import time,httpl ...

  9. python列表浅复制_Python列表的深复制和浅复制示例详解

    一.深复制与浅复制 列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制 首先看代码: l1 = [5, 4, 3, 2, 1] # 用 ...

最新文章

  1. C#编程总结--总目录
  2. java整合redis集群_SpringBoot2.X整合Redis(单机+集群+多数据源)-Lettuce版
  3. LeetCode141 Linked List Cycle. LeetCode142 Linked List Cycle II
  4. 【APIO2018】Duathlon 铁人两项 【圆方树】
  5. httpd 处理模型
  6. C语言:fopen与open的总结
  7. matlab里inline定义矩阵,Matlab中的inline函数_matlab中inline函数
  8. 【转载】浅谈 看图软件 的设计与实现
  9. 理解ROS Navigation Stack,看完这篇你就知道啦!
  10. 工作流_JBPM之Helloword
  11. unix系列系统镜像下载
  12. 手机APP测试主要有哪些内容
  13. 怎么根据错误弹窗 判断进程_苹果手机弹窗bug是什么情况?苹果手机为什么会出现弹窗bug要怎么解决?...
  14. C盘中的Users\admin文件夹太大清理方法
  15. 动手学习深度学习 04:多层感知机
  16. 汇编语言中间接寻址(间接操作数)与变址寻址(变址操作数)的区别
  17. DVDFab Virtual Drive是一套虚拟DVD/蓝光光驱模拟器。虚拟光驱。
  18. 浅谈:智能化变电站在线监测系统
  19. 自己搜集编写的Delphi 通用函数
  20. 记报错 error: jump to case label [-fpermissive] 局部变量的作用域问题

热门文章

  1. 从库备份中恢复一张表
  2. Java_apply_in_automatic_system
  3. java中Object类的hashCode和equals及toString方法。
  4. 云计算时代的网络安全
  5. 使mysql查询条件区分大小写 数据库搜索中大小写敏感性
  6. 基于Springboot实现企业人事管理系统
  7. 使用Flink的Savepoint功能
  8. python爬虫——从此不用再愁找不到小说txt文件
  9. 2017年3月14日上午日志
  10. 事件源event.target