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 ...
随机推荐
- 微信小程序中通过腾讯地图进行逆地址解析报错message: "请求来源未被授权, 此次请求来源域名:servicewechat.com"
在小程序中获取定位具体信息时,不要配置腾讯地图中的WebServiceAPI中的域名白名单什么的,域名配置直接在小程序后台中配置(就是这个货https://apis.map.qq.com), 千万千万 ...
- 【集合框架】JDK1.8源码分析之ArrayList详解(一)
[集合框架]JDK1.8源码分析之ArrayList详解(一) 一. 从ArrayList字表面推测 ArrayList类的命名是由Array和List单词组合而成,Array的中文意思是数组,Lis ...
- 测者的测试技术手册:Java中的null类型是测试不可超越的鸿沟
null是一个非常非常特殊的类型,对于每一个测试人员都要十分小心null的存在的可能性.同时null也让很多RD头疼,甚至连Java的设计者都成人null是一个设计失误.这篇文章,测者想聊聊这个让很多 ...
- Redis笔记-集群搭建
Redis单机版搭建上一篇已经基本介绍了,下面讨论Redis集群搭建方案和示例. 1.关于Redis常用的集群方案(三种): a.一主多从,如一个Master.两个Slave b.薪火相传,即集群中的 ...
- @EnableFeignClients 注解
feignClents在spring容器里找不到的原因 当使用的feignClents 来自引用别的工程时,需要指定包名,如果不指定就算使用ComponentScan 扫描也不行 import org ...
- 网站升级HTTPS后WebSocket不能连接的问题
一.前端代码 var socket = new WebSocket("wss://www.smcic.cn/wss/"); 注意点: 如果网站使用HTTPS,WebSocket必须 ...
- Python----Kernel SVM
什么是kernel Kernel的其实就是将向量feature转换与点积运算合并后的运算,如下, 概念上很简单,但是并不是所有的feature转换函数都有kernel的特性. 常见kernel 常见k ...
- pytorch识别CIFAR10:训练ResNet-34(数据增强,准确率提升到92.6%)
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前一篇中的ResNet-34残差网络,经过减小卷积核训练准确率提升到85%. 这里对训练数据集做数据 ...
- 队列(FIFO)—循环队列、队列的链式存储
1 队列的定义 队列是只允许在一端(队尾)进行插入操作,而在另一端(队头)进行删除操作的线性表. 2 队列的特点 1)先进先出是队列最大的特点,是应用中非常常见的模型,例如排队: 2)队列也属于线性表 ...
- 实验一 windows基本网络命令
一. 实验目的 1. 了解windows系统中网络命令的基本功能. 2. 掌握基本网络命令的使用方法. 3. 掌握使用网络命令观察网络状态的方法. 二.实验环境 1. 软件环境:Microsoft W ...