当前位置: 首页 > news >正文

外贸网站演示海外推广平台有哪些?

外贸网站演示,海外推广平台有哪些?,网站模版免费,生成logo的网站网络编程 Socket(套接字) socket 位于 网络协议中的 数据传输层、 该层 主要 可以通过 UDP 或者 TCP协议 实现 数据的传输 TCP 协议 VS UDP协议 tcp : 是一个 可靠的 ,面向 连接的协议。 数据在网络传输中 是安全的,不易丢失的。 TCP连接 在建立的时候&…

网络编程 Socket(套接字)

socket 位于 网络协议中的 数据传输层、 该层 主要 可以通过 UDP 或者 TCP协议 实现 数据的传输

TCP 协议 VS UDP协议

  • tcp : 是一个 可靠的 ,面向 连接的协议。 数据在网络传输中 是安全的,不易丢失的。 TCP连接 在建立的时候,需要 经过 3次握手才能成功、 在断开连接的时候,需要经过 4次挥手 才能断开。
  • udp : 是一个 不可靠的连接 、在 数据传输中 可以会出现数据丢失的问题 。传输速度比 TCP 快。

TCP 的三次握手 四次挥手


TCP 服务端代码编写

编写服务端代码的步骤

a) 创建一个 套接字对象

b) 绑定 主机(IP地址) 和 端口, 端口号的取值范围是 0 ~ 65535 ,不建议自己使用 四位数一下的端口

c) 监听 客户端的 连接 和 端口

d) 如果有客户端和服务器建立 链接、 则监听 客户端发送的消息。

f) 服务端 向 客户端 发送 消息 、

g) 断开与客户端的连接。

import socketif __name__ == '__main__':# 1. 创建一个套接字对象#   family :  采用那种模式连接服务器, 推荐使用 AF_INET (采用端口号)#   type :  采用 什么协议 SOCK_STREAM (TCP协议), SOCK_DGRAM (UDP协议)socket_server = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)# 2. 绑定主机和端口号, 主机是一个字符串,端口号必须是一个数字#  主机: a) 可以使用电脑IP地址, b) 可以使用 localhost 或者 127.0.0.1, c) 0.0.0.0 (开放本机IP地址)socket_server.bind(("192.168.17.22", 8888))# 3. 设置 服务器监听 客户端的 连接数socket_server.listen(5)# 4. 监听客户端while True:# 被动等待客户端的连接, accept 会阻塞程序的执行。# 返回 和 客户端的 conn连接通道, addr 是 客户端的IP地址和连接的端口号conn, addr = socket_server.accept()# 5. 接收客户端发送的数据 (字符串流)、需要传递一个参数,指定接收的字节数msg = conn.recv(1024).decode()# 打印消息print(f"{addr}客户端发送的消息是{msg}")# 6. 向客户端发送消息conn.send("hello 客户端".encode())# 7. 断开连接conn.close()

TCP 客户端代码编写

import socket# 1. 创建一个  套接字 对象
sc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2. 连接 TCP 服务器
sc.connect(("192.168.17.22", 8888))# 3. 发送消息给 服务器
sc.send("Hello World".encode())# 4. 接收 服务器 给的消息
data = sc.recv(1024).decode()print("服务器发送的消息是", data)# 5. 断开连接
sc.close()

客户端与客户端聊天

  • 服务端代码
import socket
import threading
import re
import jsondef forward_message(conn: socket.socket,  client_mapping: dict):"""转发消息"""while True:# 获取消息message = conn.recv(1024 * 8).decode('utf-8')# 如果这个消息是一个纯数字,说明是客户端第一次向服务器表明身份if re.fullmatch(r"\d+", message):# 将身份信息 和 通道 写入到 字典中client_mapping[message] = connprint(f"客户端{message}上线了...")else:# 如果服务器传入的不是数字、那么一定是一个字典格式的字符串dct = json.loads(message)  # {to:1111, text:'xxx', from:  2222}# 从 client_mapping 中 查找 键为 dct["to"] 的 通道sc: socket.socket = client_mapping.get(dct["to"])# 如果 找不到 sc , 说明 好友没上线if sc is None:# 给 发消息的人 返回 一个 好友不在线的 提醒conn.send("404".encode("utf-8"))else:# 使用 sc 通道、将 message 转发给 好友,这行代码有可能会报错sc.send(message.encode("utf-8"))if __name__ == '__main__':# 创建一个聊天服务器socket_server = socket.socket()# 绑定 主机和端口socket_server.bind(("0.0.0.0", 9999))# 监听客户端连接数量socket_server.listen(5)# 定义一个字典 ,用来 存储所有的客户端信息client_mapping = {}# 编写一个 while 死循环、被动等待所有客户端的连接while True:# 获取 客户端的连接conn, addr = socket_server.accept()# 每来一个客户端,开启一个线程,负责转发该客户端的消息threading.Thread(target=forward_message, args=(conn, client_mapping)).start()
  • 客户端 聊天类 编写
import socket
import threading
import jsonclass QQChat:def __init__(self, account):"""初始化 QQ账号"""self.__qq = account# 初始化 socket客户端socket_client = socket.socket()# 连接 QQ服务器socket_client.connect(("192.168.17.22", 9999))# 将 socket_client 作为 对象的属性self.__socket_client = socket_client# 向服务器发送消息、表明当前是哪一个客户端登录了self.__socket_client.send(account.encode("utf-8"))def chat(self, friend):"""给指定的好友进行聊天"""# 定义一个线程 负责 接收 消息threading.Thread(target=self.__read_message, args=(friend,)).start()# 定义一个线程 负责 发送 消息threading.Thread(target=self.__send_message, args=(friend,)).start()def __read_message(self, friend):"""负责 读取消息"""while True:message = self.__socket_client.recv(1024 * 8).decode("utf-8")# 直接对消息做反序列化data = json.loads(message)if data == 404:print(f"好友{friend}不在线")else:# 一定是一个字典、且字典中包含 谁发的消息# if data["from"] == friend:# 获取好友发送的消息print(f"{friend}:{data['text']}")# else:#     # 如果不是当前聊天的好友#     print("您有一条其他好友发送的消息、已被忽略")def __send_message(self, friend):"""负责发送消息"""while True:# 尝试从键盘获取数据message = input()# 发送消息给 好友data = {"text": message, "to": friend, "from": self.__qq}# 将数据进行 JSON序列化message = json.dumps(data)self.__socket_client.send(message.encode("utf-8"))if __name__ == '__main__':account = input("请输入您的仿QQ账号")# 登录 仿QQ服务器qq_client = client.QQChat(account)friend = input("请输入聊天用户的仿QQ账号")# 选择好友聊天qq_client.chat(friend)
http://www.dinnco.com/news/30013.html

相关文章:

  • 二级域名申请入口免费的seo网站下载
  • 现在疫情可以去广州吗seo怎么学在哪里学
  • wordpress首页分类调用seo快速排名上首页
  • 百度调整导致网站排名下降北京网站建设
  • 营销推广主要包括成都网站seo技巧
  • 做美妆网站的关键词海淀网站建设公司
  • 平面电商网站建设营销背景包括哪些内容
  • wordpress数据库邮箱免费seo公司
  • 网站建设的问题分析关键词优化的建议
  • 深圳做微信网站多少钱百度seo推广是什么
  • 想学编程做网站怎么做网络广告推广
  • jquery qq客服 添加到网站中网页设计与制作个人网站模板
  • 学校网站首页设计郑州seo优化顾问
  • 最新全国疫情中高风险地区名单seo关键词优化排名外包
  • 免费网站浏览器手机推广软文
  • 三合一商城网站百度推销广告一年多少钱
  • 山西住房建设部网站整合营销方案案例
  • 想学做网站需要学什么如何创建自己的网站平台
  • 如何快速创建网站品牌建设的五个要素
  • ui网上接单网站金华关键词优化平台
  • 做婚恋网站的开发今日国际重大新闻
  • 计算机编程入门教学视频教程泰州seo
  • 搜房网站要怎么 做4001688688人工服务
  • 做本地生活网站北京网站优化企业
  • 公司网站怎么做优化电商运营推广是做什么的
  • 房产网站建设整体架构百度一下知道首页
  • 抓取网站urlseo是指
  • 青岛 公司 网站建设搜索引擎排名影响因素有哪些
  • 网站服务器租赁你的知识宝库aso优化工具
  • 股票分析软件网站建设能够免费换友链的平台