Python3 socket即时通讯脚本实现代码实例(threading多线程)

Python 提供了两个级别访问的网络服务。:

低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。

高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

------------------------------------------------服务端代码--------------------------------------

__author__ = "托尼老师"

"""
即时通讯原理
@@@ 服务端代码

"""

from socket import *
import threading

ip = '0.0.0.0'
port =8888
# 定义 socket 参数

Server = socket(AF_INET,SOCK_STREAM)
Server.bind((ip,port))
Server.listen()
print("[*] SocketServer 正在监听...")

# 接受函数
def recvs():
  while 1:
    print(' [*] 客户端说: %s '% client.recv(1024).decode('utf-8'))

#发送函数
def sends():
  while 1:
    say = bytes(input(' [*] 我说: ') , encoding='utf-8')
    client.send(say)
# 堵塞接受请求

client,client_ip = Server.accept()
print(client_ip[0] +':'+str(client_ip[1])+' 连接成功!' )

# 创建接受线程
receive = threading.Thread(target =recvs ,args=() )
receive.start()
# 创建发送线程
send = threading.Thread(target =sends ,args=() )
send.start()

------------------------------------------------客户端代码--------------------------------------

__author__ = "托尼老师"

"""
即时通讯原理
@@@ 客户端代码

"""

from socket import *
import threading

ip,port ='127.0.0.1',8888

Client = socket(AF_INET,SOCK_STREAM)
Client.connect((ip,port))

def sends() -> '发送函数':
  while 1:

    say = bytes(input("[*]我说: "),encoding='utf-8')
    Client.send(say)
def recvs() -> '接受函数':
  while 1:

    print('[*] 服务端说: %s ' % Client.recv(1024).decode('utf-8'))

receive = threading.Thread(target =recvs ,args=() )
receive.start()
# 创建发送线程
send = threading.Thread(target =sends ,args=() )
send.start()

先执行 服务端代码,再执行客户端代码,可以实现基本通讯功能

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

(0)

相关推荐

  • python socket 聊天室实例代码详解

    python socket 聊天室 import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #绑定端口 s.bind(("127.0.0.1", 8888)) while True: data = s.recvfrom(1024) print(str(data[0].decode("gbk"))) send_data = input("请输入聊天内容") if &quo

  • Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】

    本文实例讲述了Python 网络编程之UDP发送接收数据功能.分享给大家供大家参考,具体如下: demo.py(UDP发送数据): import socket # 导入socket模块 def main(): # 创建一个udp套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定本机ip和端口号 (发送数据时,如果不绑定,系统会随机分配端口号.接收数据时,一般需要手动绑定ip和端口) udp_socket.b

  • Python socket非阻塞模块应用示例

    本文实例讲述了Python socket非阻塞模块应用.分享给大家供大家参考,具体如下: 一 服务端程序 # 导入模块 import socketserver import random # 定义一个类 class MyServer(socketserver.BaseRequestHandler): # 如果handle方法出现报错,则会进行跳过 # setup方法和finish方法无论如何都会进行执行 # 首先执行setup def setup(self): pass # 然后执行handle

  • python使用socket实现的传输demo示例【基于TCP协议】

    本文实例讲述了python使用socket实现的传输demo.分享给大家供大家参考,具体如下: socket传输,客户端代码 import socket def main(): tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 服务器位于本机 9999 tcp_client_socket.connect( ("192.168.27.72", 9999) ) # 告诉服务器,我要下载哪一个文件

  • Python Websocket服务端通信的使用示例

    1.唠唠叨叨 最近又回顾了下Websocket,发现已经忘的七七八八了.于是用js写了客户端,用python写了服务端,来复习一下这方面的知识. WebSocket 是一种标准协议,用于在客户端和服务端之间进行双向数据传输.但它跟 HTTP 没什么关系,它是基于 TCP 的一种独立实现. 以前客户端想知道服务端的处理进度,要不停地使用 Ajax 进行轮询,让浏览器隔个几秒就向服务器发一次请求,这对服务器压力较大.另外一种轮询就是采用 long poll 的方式,这就跟打电话差不多,没收到消息就一

  • python实现WebSocket服务端过程解析

    一种类似Flask开发的WebSocket-Server服务端框架,适用python3.X 1.安装模块Pywss pip install pywss 2.搭建简易服务器 2.1 服务端代码 代码简介 route: 注册请求路径 example_1(request, data): request: socket句柄,能够发送和接收数据接.发送数据request.ws.send(data),收数据request.ws_recv(1024) data: 客户端发送的数据存于此处 from pywss

  • 详解python websocket获取实时数据的几种常见链接方式

    第一种, 使用create_connection链接,需要pip install websocket-client (此方法不建议使用,链接不稳定,容易断,并且连接很耗时) import time from websocket import create_connection url = 'wss://i.cg.net/wi/ws' while True: # 一直链接,直到连接上就退出循环 time.sleep(2) try: ws = create_connection(url) print

  • Python3 socket即时通讯脚本实现代码实例(threading多线程)

    Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发. ------------------------------------------------服务端代码-------------------------------------- __author__ = "

  • koa socket即时通讯的示例代码

    前言 http的特点是一问一答,而即时通讯是需要双向通信的,这样以前的即时通信只能使用轮询的方式通过周期性的ajax请求获取数据,直到websocket出现,就完美实现了双向通信 一 即时通讯方式简介 段轮询 前台使用setInterval进行定时请求后台,这样无疑非常浪费性能 长轮询和长连接(html5的EventSource) 客服端连接一次,服务端不断开连接,服务端接收到新消息就发送给前台,客服端和服务端保持一直连接,缺点是只有服务端向客服端输出 websocket websocket不再

  • SpringBoot实现WebSocket即时通讯的示例代码

    目录 1.引入依赖 2.WebSocketConfig 开启WebSocket 3.WebSocketServer 4.测试连接发送和接收消息 5.在线测试地址 6.测试截图 1.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>

  • python3读取csv文件任意行列代码实例

    这篇文章主要介绍了python3读取csv文件任意行列代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 读取每一行 reader = csv.reader(f) 此时reader返回的值是csv文件中每行的列表,将每行读取的值作为列表返回 #读取每一行 filename='D:\\file_information1.csv' import csv with open(filename,newline = '',encoding = 'ut

  • Python3.7实现验证码登录方式代码实例

    这篇文章主要介绍了Python3.7实现验证码登录方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 import random import time def login(): for frequency in range(3): # 生成 字母+数字的组合列表 num_lst = [i for i in range(10)] [num_lst.append(chr(j)) for j in range(97,123)] #

  • Python3 pickle对象串行化代码实例解析

    1.pickle对象串行化 pickle模块实现了一个算法可以将任意的Python对象转换为一系列字节.这个过程也被称为串行化对象.可以传输或存储表示对象的字节流,然后再重新构造来创建有相同性质的新对象. 1.1 编码和解码字符串中的数据 第一个例子使用dumps()将一个数据结构编码为一个字符串,然后把这个字符串打印到控制台.它使用了一个完全由内置类型构成的数据结构.任何类的实例都可以pickled,如后面的例子所示. import pickle import pprint data = [{

  • Python3进制之间的转换代码实例

    Python3进制之间的转换 在Python里面实现进制之间的转换是非常方便的,有专门的函数来进行这个操作: 下面直接上代码: # 进制之间的转换 a = 10 # 转换为二进制 print(bin(a)) # 结果为0b1010 # 转换为八进制 print(oct(a)) # 结果为0o12 # 转换为八进制 print(hex(a)) # 结果为0xa # 一个非十进制的数转换为十进制 print(int(0b1010)) # 结果为10 以上就是本文的全部内容,希望对大家的学习有所帮助,

  • NodeJs 实现简单WebSocket即时通讯的示例代码

    服务器的实现很简单,先装一个nodeJs的模块,叫nodejs-websocket , 直接在nodeJs命令行中敲入:npm install nodejs-websocket回车就可以安装好了,然后就可以开始建立服务器了,因为有了nodejs-websocket模块,所以很多工作都不用我们自己做,直接调用别人封装好的方法就行了: 服务端代码 根据客户端传来的消息判断哪个是game1,哪个是game2,保存connection对象. var ws = require("nodejs-websoc

  • Python3合并两个有序数组代码实例

    第一种思路,把两个数组合为一个数组然后再排序,问题又回归到冒泡和快排了,没有用到两个数组的有序性.(不好) 第二种思路,循环比较两个有序数组头位元素的大小,并把头元素放到新数组中,从老数组中删掉,直到其中一个数组长度为0.然后再把不为空的老数组中剩下的部分加到新数组的结尾.(好) 第二种思路的排序算法与测试代码如下: def merge_sort(a, b): ret = [] while len(a)>0 and len(b)>0: if a[0] <= b[0]: ret.appen

  • Java如何防止JS脚本注入代码实例

    1.java中防止JS脚本注入的工具类-通用 public class XssUtil { private static Map<String, String> xssMap = new LinkedHashMap<String, String>(); private static Map<String, String> xssNewMap = new LinkedHashMap<String, String>(); static { init(); } p

随机推荐