python Socket之客户端和服务端握手详解


Posted in Python onSeptember 18, 2017

简单的学习下利用socket来建立客户端和服务端之间的连接并且发送数据

1. 客户端socketClient.py代码

import socket 
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
# 建立连接: 
s.connect(('127.0.0.1', 9999)) 
# 接收欢迎消息: 
print(s.recv(1024).decode('utf-8')) 
for data in [b'Michael', b'Tracy', b'Sarah']: 
 # 发送数据: 
 s.send(data) 
 print(s.recv(1024).decode('utf-8')) 
s.send(b'exit') 
s.close()

2. 服务端serverSocket.py代码

import socket 
import threading 
import time 
# from threading import Thread 
 
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
# 监听端口: 
s.bind(('127.0.0.1', 9999)) 
s.listen(5) 
print('Waiting for connection...') 
 
def tcplink(sock, addr): 
 print('Accept new connection from %s:%s...' % addr) 
 sock.send(b'Welcome!') 
 while True: 
  data = sock.recv(1024) 
  time.sleep(1) 
  if not data or data.decode('utf-8') == 'exit': 
   break 
  sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8')) 
 sock.close() 
 print('Connection from %s:%s closed.' % addr) 
 
while True: 
 # 接受一个新连接: 
 sock, addr = s.accept() 
 # 创建新线程来处理TCP连接: 
 t = threading.Thread(target=tcplink, args=(sock, addr)) 
 t.start()

3.操作过程

开两个控制台窗口,先运行服务端 python3 serverSocket.py

然后运行客户端 python3 socketClient.py

socket连接截图如下

python Socket之客户端和服务端握手详解

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

Python 相关文章推荐
Python的ORM框架SQLAlchemy入门教程
Apr 28 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
Python中作用域的深入讲解
Dec 10 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
Jul 12 Python
利用anaconda作为python的依赖库管理方法
Aug 13 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
python类中super() 的使用解析
Dec 19 Python
Matplotlib自定义坐标轴刻度的实现示例
Jun 18 Python
PyQt5爬取12306车票信息程序的实现
May 14 Python
Python基于time模块求程序运行时间的方法
Sep 18 #Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 #Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
Sep 18 #Python
Python实现输出程序执行进度百分比的方法
Sep 16 #Python
Python实现求笛卡尔乘积的方法
Sep 16 #Python
轻松理解Python 中的 descriptor
Sep 15 #Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 #Python
You might like
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
来自PHP.NET的入门教程
2006/10/09 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
php实现字符串翻转的方法
2015/03/27 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
js动态引入的四种方法
2018/05/05 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
微信小程序(订阅消息)功能
2019/10/25 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
理解Python中的类与实例
2015/04/27 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
django rest framework serializers序列化实例
2020/05/13 Python
10张动图学会python循环与递归问题
2021/02/06 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
天鹅的故事教学反思
2014/02/04 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
初中英语教学反思范文
2016/02/15 职场文书