案例如下:

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通过套接字来发送接收消息的更多相关文章

  1. Python之套接字

    Python之套接字 客户端Client/服务端Server架构: 1.硬件C/S架构 2.软件C/S架构 OSI4层:4层里有五层,五层里又有7层. 四层---------五层--------七层 ...

  2. Python Socket套接字编程

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  3. Python的套接字、IPv4和简单的客户端/服务器编程

    #!/usr/bin/env python # -*- coding: utf-8 -*- import socket from binascii import hexlify import sys ...

  4. 【Spring】使用Spring和AMQP发送接收消息(上)

    讲AMQP之前,先讲下传统的JMS的消息模型,JMS中主要有三个参与者:消息的生产者.消费者.传递消息的通道(队列或者主题),两种消息模型如下:通道是队列: 通道是队列: 通道是主题: 在JMS中,虽 ...

  5. Python原始套接字编程

    在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互. 因此想使用原始套接字进行编程,直接构造数据包,并在IP层进行发送,即采用SOCK_R ...

  6. python socket 套接字编程 单进程服务器 实现多客户端访问

    服务器: import socket #单进程服务器 实现多客户端访问 IO复用 #吧所有的客户端套接字 放在一个列表里面,一次又一次的便利过滤 server = socket.socket(sock ...

  7. Python原始套接字编程-乾颐堂

    在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互. 因此想使用原始套接字进行编程,直接构造数据包,并在IP层进行发送,即采用SOCK_R ...

  8. Python Socket套接字

    socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...

  9. python UDP套接字通信

    UDPserver.py import socket #导入套接字模块 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # - socket.A ...

随机推荐

  1. Android常用的四种布局(或者说是五种)

    一.FrameLayout(帧布局): 显示特点:所有的子控件默认显示在FrameLayout的左上角,会重叠在一起显示. 常用属性: layout_gravity(设置给子控件,调整控件在容器内的重 ...

  2. TextSwitcher 文本切换器的功能与用法

    TextSwitcher集成了ViewSwitcher, 因此它具有与ViewSwitcher相同的特性:可以在切换View组件时使用动画效果.与ImageSwitcher相似的是,使用TextSwi ...

  3. Python使用Plotly绘图工具,绘制直方图

    今天我们再来讲解一下Python使用Plotly绘图工具如何绘制直方图 使用plotly绘制直方图需要用到graph_objs包中的Histogram函数 我们将数据赋值给函数中的x变量,x = da ...

  4. Jmeter、Java当double显示的数字过长时取消科学计数法显示

    今日,由于项目需要,使用Jmeter发送查询账户并不保存余额,经过交易后,进行运算后再次比对余额. 实施过程中获取了余额字段并赋值给一个double变量.变量进行运算后再与交易后的账户余额进行比对.这 ...

  5. ubuntu18.04 ssh 远程系统拒绝连接 解决方法

    错误提示是这个: The remote system refused the connection. 原因是 Ubuntu 没安装  一个软件, 废话不多说 ,上解决方法: 执行该条命令,安装 ,安装 ...

  6. 经度和纬度在SQL中的数据类型

    冬天太冷,等坐公司班车也很冷,就萌生了给班车做一个到站查询功能. 在某宝上买了汽车在线的GPS设备, 终生免费的服务的. 这里不得不提下这个设备的优点, 它提供API接口,还是免费的. 所以在班车上装 ...

  7. C#基础知识之IOC

    依赖注入:http://www.cnblogs.com/leoo2sk/archive/2009/06/17/1504693.html IOC:https://jinnianshilongnian.i ...

  8. Kafka监控系统Kafka Eagle:支持kerberos认证

    在线文档:https://ke.smartloli.org/ 作者博客:https://www.cnblogs.com/smartloli/p/9371904.html 源码地址:https://gi ...

  9. BAT面试题:请使用递归构建N叉树

    题目要求: 现在我们拥有全国的省.市.县.镇的行政信息,比如 浙江省 -> 杭州市 -> 西湖区 --> xx街道,请将这些信息构建成一棵树,根节点为全国,叶子节点为镇. 我的误解: ...

  10. Python 原生协程------asyncio

    协程 在python3.5以前,写成的实现都是通过生成器的yield from原理实现的, 这样实现的缺点是代码看起来会很乱,于是3.5版本之后python实现了原生的协程,并且引入了async和aw ...