python3.5实现socket通讯示例(TCP)


Posted in Python onFebruary 07, 2017

TCP连接:

tcp是面向连接的一个协议,意味着,客户端和服务器开发发送数据之前,需要先握手创建一个TCP连接。TCP连接的一端与客户端套接字相互联系,另一端与服务器套接字相联系。当创建该TCP连接的时,我们需要讲客户端与服务器的套接字地址(IP地址和端口号)关联起来。使用创建的TCP连接,当一侧要向另一侧发送数据的时候,它只需要经过其套接字将数据丢给TCP连接,不需要再次附上目的地址。

使用TCP连接的客户-服务器程序:

python3.5实现socket通讯示例(TCP)

TCPServer.py

import socket

import socketserver

import time

import threading

 

serverPort = 50007

serverSocket =socket.socket(socket.AF_INET,socket.SOCK_STREAM)

serverSocket.bind (('',serverPort))

serverSocket.listen(1)

print('The server is ready to receive')

while 1:

  connectionSocket,addr = serverSocket.accept()

  sentence = connectionSocket.recv(1024)

  capitalizedSentence = sentence.upper()

  connectionSocket.send(capitalizedSentence)

  connectionSocket.close()

TCPClient.py

from socket import *

serverName = '127.0.0.1'

serverPort = 50007

clientSocket =socket(AF_INET,SOCK_STREAM)

clientSocket.connect((serverName,serverPort))

sentence = input('Input lowercase sentence:')

clientSocket.send(sentence.encode())

modifiedSentence = clientSocket.recv(1024)

print('From Server:',modifiedSentence.decode())

clientSocket.close()

注意:

1、客户端能够使用一个TCP套接字向服务器发送数据之前,必须在客户端与服务器之间创建一个TCP连接;

2、clientSocket.connect((serverName,serverPort)):执行三次握手,创建TCP连接;

3、clientSocket.close():关闭客户端和服务器之间的TCP连接;

4、connectionSocket.close():向客户端发送完毕之后关闭该连接套接字

TCP连接需要两个套接字,UDP只要一个,

TCP服务器支持n个并行连接,每条连接来自不同客户端,TCP连接需要n+1个套接字即可。

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

Python 相关文章推荐
Python中的引用和拷贝浅析
Nov 22 Python
Python中Django 后台自定义表单控件
Mar 28 Python
在pycharm中设置显示行数的方法
Jan 16 Python
Python创建字典的八种方式
Feb 27 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
flask框架url与重定向操作实例详解
Jan 25 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 Python
Python中字典的setdefault()方法教程
Feb 07 #Python
Python连接数据库学习之DB-API详解
Feb 07 #Python
使用Python中的tkinter模块作图的方法
Feb 07 #Python
Scrapy-redis爬虫分布式爬取的分析和实现
Feb 07 #Python
详解python中字典的循环遍历的两种方式
Feb 07 #Python
python3使用PyMysql连接mysql数据库实例
Feb 07 #Python
Python处理文本文件中控制字符的方法
Feb 07 #Python
You might like
PHP 常见郁闷问题答解
2006/11/25 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
php比较相似字符串的方法
2015/06/05 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
php简单实现数组分页的方法
2016/04/30 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
vue.js指令v-for使用及索引获取
2016/11/03 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
关于微信小程序bug记录与解决方法
2018/08/15 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
Python 异常处理实例详解
2014/03/12 Python
Python yield 使用浅析
2015/05/28 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
html5启动原生APP总结
2020/07/03 HTML / CSS
Oracle快照(snapshot)
2015/03/13 面试题
工业自动化专业毕业生推荐信
2013/11/18 职场文书
大学生四年生活自我鉴定
2013/11/21 职场文书
说明书范文
2014/05/07 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android