Python中的TCP socket写法示例


Posted in Python onMay 11, 2018

前言

本文主要介绍了关于Python中TCP socket的写法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

一、 服务器server的写法:

1. 创建 socket 套接字:

网络编程接口 socket(family = AF_INET , type = SOCKET_STREM,proto = 0, fileno = None)   提供了多种socket family。AF_INET 是默认的family,需要绑定IP和端口。 127.0.0.1是一个特殊的IP地址,表示本机地址。如果绑定到这个地址,客户端必须同时在本机运行才能连接,也就是说,外部的计算机无法连接进来。

不同的协议family使用的地址形式不同,通常来说我们使用的是AF_INET-----地址是以(IP,PORT)形式存。在type 类型,我们常用的有两种 SOCKET_STREM ,流式套接字,表示基于连接的TCP套接字,SOCKET_DGRAM, 数据报套接字,基于无连接的(UDP)接口。 如果不设定,默认就是 SOCKET_STREM 。

2. bind 绑定     

使用方法:socket.bind(address)  把套接字绑定在 address 上,address的形式 根据 family 来设定。不管是client还是server,创建socket的时候都是通过一个本地的文件来进行的。

3. listen 监听      

使用方法:socket.listen([backlog])

使能 socket 接收连接请求,listen(self,backlog = None) ,backlog需要大于0,指定了可以缓存的连接请求的数量。

4. accept 接受请求连接

在等待一个即将来临的连接,会返回一个代表连接的新的socket,还会返回一个地址(host和port),可以用两个东西接收,前一个代表新的socket,后一个就是接收地址。

写的方法:connet_socket,client_addr = srv.accept() connet_socket就是新的socket,然后connet_socket开始接下来的传输。connet_socket,client_addr,前者表示接收的新的socket,后者就是地址,具体看程序第10行。

5. 接收数据

使用方法:socket.recv(bufsize[,flags])

从 socket 中接收数据,返回的是 bytes ,是接收到的内容。bufsize指定了一次最多接收多少个数据,如果没有数据接收,程序会阻塞,一直到有数据或者远程终端断开连接.

6. 发送数据

使用方法:socket.send(bytes[, flags])

你的socket必须和远程的socket建立了联系,返回值是发送的数量,可以判断你的数据是否发送完毕,如果没有,继续send余下来的数据

import socket
hostname = '127.0.0.1' #设置主机名
port = 6666  #设置端口号 要确保这个端口号没有被使用,可以在cmd里面查看
addr = (hostname,port)
srv = socket.socket() #创建一个socket
srv.bind(addr)
srv.listen(5)
print("waitting connect")
while True:
 connect_socket,client_addr = srv.accept()
 print(client_addr)
 recevent = connect_socket.recv(1024)
 print(str(recevent,encoding='gbk'))
 connect_socket.send.send(bytes("你好,数据传输完成,这里是gaby-yan--server",encoding='gbk'))
 connect_socket.close()

二、 客户端client的写法:

客户端的写法相对比较简单,只有

1.创建socket

2. 建立连接 connect

3. 发送 send

4. 接收recv

这是由于他们的传递编程框架不同造成的,如图。

Python中的TCP socket写法示例 

import socket
hostname = '127.0.0.1'
port = 7777
addr = (hostname,port)

clientsock = socket.socket() ## 创建一个socket
clientsock.connect(addr) # 建立连接

say = input("输入你想传送的消息:")
clientsock.send(bytes(say,encoding='gbk')) #发送消息
recvdata = clientsock.recv(1024)  #接收消息 recvdata 是bytes形式的
print(str(recvdata,encoding='gbk')) # 我们看不懂bytes,所以转化为 str
clientsock.close()

注意:先运行server的代码,再运行client的代码。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
pandas实现选取特定索引的行
Apr 20 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
Python中pillow知识点学习
Apr 30 Python
python退出命令是什么?详解python退出方法
Dec 10 Python
python opencv判断图像是否为空的实例
Jan 26 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
python 实现两个线程交替执行
May 02 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
使用opencv中匹配点对的坐标提取方式
Jun 04 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
Mar 03 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 Python
浅谈Python中的正则表达式
Jun 28 Python
Python简单定义与使用二叉树示例
May 11 #Python
Python堆排序原理与实现方法详解
May 11 #Python
python 执行shell命令并将结果保存的实例
May 11 #Python
python 实现登录网页的操作方法
May 11 #Python
Python利用splinter实现浏览器自动化操作方法
May 11 #Python
Python爬虫信息输入及页面的切换方法
May 11 #Python
对python-3-print重定向输出的几种方法总结
May 11 #Python
You might like
php上传文件问题汇总
2015/01/30 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
2007/04/20 Javascript
用js实现随机返回数组的一个元素
2007/08/13 Javascript
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python获取远程文件大小的函数代码分享
2014/05/13 Python
Python标准库之循环器(itertools)介绍
2014/11/25 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
Python的多维空数组赋值方法
2018/04/13 Python
python基础梳理(一)(推荐)
2019/04/06 Python
如何在python中实现随机选择
2019/11/02 Python
flask 实现token机制的示例代码
2019/11/07 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python创建文本文件的简单方法
2020/08/30 Python
python time.strptime格式化实例详解
2021/02/03 Python
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
学生会竞选自荐信
2013/10/12 职场文书
园林毕业生自我鉴定范文
2013/12/29 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
毕业生自荐信范文
2015/03/05 职场文书
课程设计感想范文
2015/08/11 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书