python通过套接字来发送接收消息
案例如下:
1、启动一个服务端套接字服务
2、启动一个客户端套接字服务
3、客户端向服务端发送一个hello,服务端则回复一个word,并打印
参考地址:https://www.cnblogs.com/xilouch/p/4618903.html
服务端代码:
#coding:utf-8 import socket
import time class Server:
def __init__(self,host,port):
self.port = port
self.host = host
self.status = 0
self.BUF_SIZE = 1024 def createServer(self):
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server.bind((self.host, self.port)) def startServer(self):
self.status = 1
self.createServer()
#设置接收的连接数为1
self.server.listen(1)
client, address = self.server.accept()
while self.status == 1: # 循环收发数据包,长连接
data = client.recv(self.BUF_SIZE)
text = data.decode()
if text != "":
print(text) # python3 要使用decode
client.send("world".encode())
# client.close() #连接不断开,长连接 if __name__ == "__main__":
server = Server("localhost",8083)
server.createServer()
server.startServer()
客户端代码:
#coding:utf-8 import socket
import time
import threading class Client:
def __init__(self,host,port):
self.port = port
self.host = host
self.status = 0
self.BUF_SIZE = 1024 def connect(self):
self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.client.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) # 在客户端开启心跳
self.client.connect((self.host, self.port)) def send(self,mes):
client.startResv()
while True:
self.client.send(mes.encode())
time.sleep(1) # 如果想验证长时间没发数据,SOCKET连接会不会断开,则可以设置时间长一点 def resv(self):
while True:
data = self.client.recv(self.BUF_SIZE)
text = data.decode()
print(text) def startResv(self):
t = threading.Thread(target=self.resv)
t.start() def close(self):
self.client.close() if __name__ == "__main__":
client = Client("localhost",8083)
client.connect()
client.send("hello")
运行如下图:

python通过套接字来发送接收消息的更多相关文章
- Python之套接字
Python之套接字 客户端Client/服务端Server架构: 1.硬件C/S架构 2.软件C/S架构 OSI4层:4层里有五层,五层里又有7层. 四层---------五层--------七层 ...
- Python Socket套接字编程
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- Python的套接字、IPv4和简单的客户端/服务器编程
#!/usr/bin/env python # -*- coding: utf-8 -*- import socket from binascii import hexlify import sys ...
- 【Spring】使用Spring和AMQP发送接收消息(上)
讲AMQP之前,先讲下传统的JMS的消息模型,JMS中主要有三个参与者:消息的生产者.消费者.传递消息的通道(队列或者主题),两种消息模型如下:通道是队列: 通道是队列: 通道是主题: 在JMS中,虽 ...
- Python原始套接字编程
在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互. 因此想使用原始套接字进行编程,直接构造数据包,并在IP层进行发送,即采用SOCK_R ...
- python socket 套接字编程 单进程服务器 实现多客户端访问
服务器: import socket #单进程服务器 实现多客户端访问 IO复用 #吧所有的客户端套接字 放在一个列表里面,一次又一次的便利过滤 server = socket.socket(sock ...
- Python原始套接字编程-乾颐堂
在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互. 因此想使用原始套接字进行编程,直接构造数据包,并在IP层进行发送,即采用SOCK_R ...
- Python Socket套接字
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...
- python UDP套接字通信
UDPserver.py import socket #导入套接字模块 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # - socket.A ...
随机推荐
- [转载]编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数
[转载]编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数 转载自:https://blog.csdn.net/one_money/article/details/56921 ...
- Fixed-Point Designer(设计、仿真和分析定点系统)
Fixed-Point Designer™ 提供开发定点和单精度算法所需的数据类型和工具,以在嵌入式硬件上进行性能优化.Fixed-Point Designer 会分析您的设计并提供建议的数据类型和属 ...
- web安全—sql注入漏洞
SQL注入-mysql注入 一.普通的mysql注入 MySQL注入不像注入access数据库那样,不需要猜.从mysql5.0以上的版本,出现一个虚拟的数据库,即:information_schem ...
- 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单
为了方便大家使用ZCELL,应网友要求,整理编写了相关文档,现与产品一起同步发布,供大家下载使用,使用过程中如有疑问,请与我QQ联系. 智表(ZCELL)V1.4.0版本 功能清单文档下载地址: 功 ...
- 《神经网络算法与实现-基于Java语言》的读书笔记
文章提纲 全书总评 读书笔记 C1.初识神经网络 C2.神经网络是如何学习的 C3.有监督学习(运用感知机) C4.无监督学习(自组织映射) Rreferences(参考文献) 全书总评 书本印刷质量 ...
- javascript基础之对象
老师的博客:https://www.cnblogs.com/liwenzhou/p/8004649.html#autoid-1-8-6 JavaScript中的所有事物都是对象:字符串.数字.数组.日 ...
- Clion快捷键
快捷键配置 File->Setting->Keymap->Keymaps 选择Visual Studio风格 代码提示的匹配模式 File->Setting->Edito ...
- 设置SSH Key
初始设置git config --global user.name "qian" git config --global user.email "1067803326@q ...
- Ubuntu server 16.04的安装 以及配置(服务器版)
1.在电脑上下载最新版本的Ubuntu服务器ISO映像,刻录到CD或创建一个可启动的USB盘. 2.视情况而定,进入到服务器的boot界面,把cd或者usb设置为启动第一项 3.开始安装 1)Ub ...
- handsontable的基础应用
handsontable是一款页面端的表格式交互插件,可以通过她加载显示表格内容,能够支持合并项.统计.行列拖动等. 同时,支持对加载后的表格页面的处理:添加/删除行/列,合并单元格等操作. 我在项目 ...