python socket编程入门级
客户端
import socket
import time sk = socket.socket() # 第一步:创建socket对象
address = ('127.0.0.1', 8080) # 协议是ip+端口(类型元组)
sk.connect(address) # 第二步:建立链接
while True:
inp = input('客户端>>>>>>>>>\n')
if inp == 'exit':
break
sk.send(bytes(inp, 'utf8')) # 第三步:请求数据
time.sleep(1) # low方法防止粘包
data = sk.recv(1024) # 接收确认信息
print("接收服务端的数据", str(data, 'utf8'))
sk.close()
服务端
import socket # family type
# AF_INET,AF_INET6
# AF_UNIX
# SOCK_STREAM:: TCP
# SOCK_DGRAM :: UDP
# sk只负责绑定端口等待链接,发送接收消息用conn。
sk = socket.socket() # 默认参数tcp
address = ('127.0.1', 8080)
sk.bind(address) # 绑定ip协议和端口
sk.listen(3) # 定义最大可以挂起连接数。
print('服务的waiting.......')
while 1:
conn, addr = sk.accept() # 等待接收来自客户端的信息
print(addr)
while 1:
try:
data = conn.recv(1024)
except Exception:
break
if not data: break
print('接收到来自客户端的信息......', str(data, 'utf8'))
inp = input('》》》》》》》》')
conn.send(bytes(inp, 'utf8'))
使用多线程版
import socketserver class MyServer(socketserver.BaseRequestHandler):
# 重写父类的方法
def handle(self):
print('waiting.......')
while 1:
conn = self.request
print(self.client_address)
while 1:
try:
data = conn.recv(1024)
except Exception:
break
if not data:
break
print('......', str(data, 'utf8'))
inp = input('》》》》》》》》')
conn.sendall(bytes(inp, 'utf8'))
conn.close() if __name__ == '__main__':
host = '127.0.0.1'
ip = '8080'
server = socketserver.ThreadingTCPServer((host, ip), MyServer)#多线程通话
# 不会出现在一个客户端结束后,当前服务器端就会关闭或者报错,而是继续运行,与其他的客户端继续进行通话。
server.serve_forever()
python socket编程入门级的更多相关文章
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- python/socket编程之粘包
python/socket编程之粘包 粘包 只有TCP有粘包现象,UDP永远不会粘包. 首先需要掌握一个socket收发消息的原理 发送端可以是1k,1k的发送数据而接受端的应用程序可以2k,2k的提 ...
- PYTHON SOCKET编程简介
原文地址: PYTHON SOCKET编程详细介绍 Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 Soc ...
- python socket编程笔记
用python实现一个简单的socket网络聊天通讯 (Linux --py2.7平台与windows--py3.6平台) 人生苦短之我用Python篇(socket编程) python之路 sock ...
- [Python_7] Python Socket 编程
0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*- "&q ...
- Python Socket 编程示例 Echo Server
简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...
- Python Socket 编程——聊天室演示样例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket ...
- python socket编程入门(编写server实例)+send 与sendall的区别与使用方法
python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...
- 第九章:Python高级编程-Python socket编程
第九章:Python高级编程-Python socket编程 Python3高级核心技术97讲 笔记 9.1 弄懂HTTP.Socket.TCP这几个概念 Socket为我们封装好了协议 9.2 cl ...
随机推荐
- 【BZOJ3294】放棋子(动态规划,容斥,组合数学)
[BZOJ3294]放棋子(动态规划,容斥,组合数学) 题面 BZOJ 洛谷 题解 如果某一行某一列被某一种颜色给占了,那么在考虑其他行的时候可以直接把这些行和这些列给丢掉. 那么我们就可以写出一个\ ...
- BZOJ2079 [Poi2010]Guilds 【贪心】
题目链接 BZOJ2079 题解 题意就是黑白染色,要求相邻点存在不同颜色的点 显然从一个点出发,相邻点如果没有染色,染不同颜色,那么一个联通块一定会满足要求 证明:在\(dfs\)树上,每个点父亲和 ...
- 20135319zl elf文件报告
一. 查看资料 使用vim /usr/include/elf.h可以查看elf文件头 二. 找到.text hexeditor po 地址为0x32,即第51字节储存的是elf header最后一个域 ...
- Netlink 介绍(译)
原文地址:http://people.redhat.com/nhorman/papers/netlink.pdf 译文: 1 介绍 在Linux和Unix的众多发行版中的网络配置功能, 都是编程者事后 ...
- NAT ------ 为什么手动设置NAT端口映射(转发)不成功,导致访问不了局域网服务器
手动设置端口映射成功的条件是路由器WAN口接的是外网IP,而不是网络提供商的路由器NAT之后的IP.假如有个外网的客户端,连的服务器IP一定要是外网IP(假设IP_A),如果自己的路由器WAN口接的是 ...
- tp 用group去重
$baseGoodIds_arr = [1,2,3,4,5,6,7,8,9];$relate_gimgs = D('GoodsImages')->where(['good_id' => [ ...
- 自动化工具制作PASCAL VOC 数据集
自动化工具制作PASCAL VOC 数据集 1. VOC的格式 VOC主要有三个重要的文件夹:Annotations.ImageSets和JPEGImages JPEGImages 文件夹 该文件 ...
- 第一回 java~简介
Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式 ...
- Jekens 配置多项目SCM GitLab+Jenkins持续集成环境
参考: 搭建GitLab+Jenkins持续集成环境图文教程 https://blog.csdn.net/ruangong1203/article/details/73065410 Jenkins中配 ...
- [译]Quartz.NET 框架 教程(中文版)2.2.x 之第八课 调度监听器
第八课 调度监听器 调度监听器和触发监听器和触发监听器.作业任务监听器非常相似,只是调度监听器在调度器内接收通知事件,而不需要关联具体的触发器或作业任务事件. 跟调度监听器相关的事件,添加作业任务/触 ...