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实现的批量下载RFC文档
Mar 10 Python
python leetcode 字符串相乘实例详解
Sep 03 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
python opencv调用笔记本摄像头
Aug 28 Python
python使用socket实现的传输demo示例【基于TCP协议】
Sep 24 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
Django框架获取form表单数据方式总结
Apr 22 Python
python 如何调用远程接口
Sep 11 Python
python time()的实例用法
Nov 03 Python
python opencv肤色检测的实现示例
Dec 21 Python
PyQt5通过信号实现MVC的示例
Feb 06 Python
python通配符之glob模块的使用详解
Apr 24 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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
php+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
子页向父页传值示例
2013/11/27 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
微信小程序slider组件使用详解
2018/01/31 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
vue实现分页组件
2020/06/16 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
在python中画正态分布图像的实例
2019/07/08 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
薪酬专员岗位职责
2014/02/18 职场文书
总经理工作职责范文
2014/03/14 职场文书
环卫工人节活动总结
2014/08/29 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
解析Redis Cluster原理
2021/06/21 Redis
Nginx虚拟主机的配置步骤过程全解
2022/03/31 Servers