Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】

本文实例讲述了Python 网络编程之TCP客户端/服务端功能。分享给大家供大家参考,具体如下:

demo.py(TCP客户端):

import socket
def main():
  # 1. 创建tcp的套接字
  tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 2. 链接服务器
  # tcp_socket.connect(("192.168.33.11", 7890))
  server_ip = input("请输入要链接的服务器的ip:")
  server_port = int(input("请输入要链接的服务器的port:"))
  server_addr = (server_ip, server_port)
  tcp_socket.connect(server_addr)
  # 3. 发送数据/接收数据
  send_data = input("请输入要发送的数据:")
  tcp_socket.send(send_data.encode("utf-8"))
  # 接收数据。 会阻塞代码,直到接收到数据
  recv_data = tcp_socket.recv(1024) # 1024表示本次接收的最大字节数。
  print(recv_data.decode("utf-8"))
  # 4. 关闭套接字
  tcp_socket.close()
if __name__ == "__main__":
  main()

demo.py(TCP服务端):

import socket
def main():
  # 1. 创建套接字 socket
  tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 设置当服务器先close 即服务器端4次挥手之后资源能够立即释放,这样就保证了,下次运行程序时 可以立即绑定7890端口 (如果服务端先close,再启动服务端就不会报端口被占用的错误。)
  tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  # 2. 绑定本机ip和端口号 bind
  tcp_server_socket.bind(("", 7890))
  # 3. 监听客户端的链接请求 listen (由主动去链接服务器,变成被客户端链接)
  tcp_server_socket.listen(128) # 128影响链接客户端的数量(并发量)(和操作系统也有关)
  # 4. 接受客户端的链接 accept。 会阻塞代码,直到有客户端链接
  new_client_socket, client_addr = tcp_server_socket.accept()
  print(client_addr) # ("192.168.33.109",53766) 客户端的ip和端口
  # 接收客户端发送过来的数据。 会阻塞代码,直到接收到数据
  recv_data = new_client_socket.recv(1024) # 1024表示本次接收的最大字节数。
  print(recv_data.decode("utf-8")) # 如果recv_data为空,表示客户端断开链接
  # 写数据给客户端
  new_client_socket.send("hahahghai-----ok-----".encode("utf-8"))
  # 关闭套接字
  new_client_socket.close() # 与客户端通信的套接字
  tcp_server_socket.close() # 服务器套接字
if __name__ == "__main__":
  main()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

时间: 2019-10-12

python3基于TCP实现CS架构文件传输

本文实例为大家分享了python3实现CS架构文件传输的具体代码,供大家参考,具体内容如下 1.目标: 基于tcp实现CS架构的文件传输 指令列表:(1)get:从服务器端下载文件 (2)put:向服务器端上传文件 (3)list:获得服务器端的目录 2.socket模块函数: (1)send和sendall:send的作用是发送TCP数据,返回发送的数据大小.send函数不保证将所有数据全部发送,因此可能需要重复多次才能完成所有数据的发送.sendall的作用是发送完整的TCP数据,成功时返回

对python中基于tcp协议的通信(数据传输)实例讲解

阅读目录 tcp协议:流式协议(以数据流的形式通信传输).安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信) tcp协议在OSI七层协议中属于传输层,它上承用户层的数据收发,下启网络层.数据链路层.物理层.可以说很多安全数据的传输通信都是基于tcp协议进行的. 为了让tcp通信更加方便需要引入一个socket模块(将网络层.数据链路层.物理层封装的模块),我们只要调用模块中的相关接口就能实现传输层下面的繁琐操作. 简单的tcp协议通信模板:(需要一个服务端和一个客户端) 服务

python基于socket实现的UDP及TCP通讯功能示例

本文实例讲述了python基于socket实现的UDP及TCP通讯功能.分享给大家供大家参考,具体如下: Server: import socket address = ('127.0.0.1', 31500) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind(address) while True: data, addr = s.recvfrom(2048) if not data: print "client has ex

python使用tcp实现局域网内文件传输

本文为大家分享了python使用tcp实现局域网内文件传输的具体代码,供大家参考,具体内容如下 功能: 可以利用python创建的TCP客户端从我们自己搭建的TCP服务器上下载文件. 实现需求: 安装socket模块 简单了解sokcet模块用法 服务器代码如下: import socket def file_deal(file_name): # 定义函数用于处理用户索要下载的文件 try: # 二进制方式读取 files = open(file_name, "rb") mes = f

python3.5基于TCP实现文件传输

本文实例为大家分享了python3.5基于TCP实现文件传输的具体代码,供大家参考,具体内容如下 服务器代码 # _*_ coding:utf-8 _*_ from socket import * import _thread def tcplink(skt,addr): print(skt) print(addr,"已经连接上...") print('开始发送文件') with open('./ww.jpg', 'rb') as f: for data in f: print(dat

Python3使用TCP编写一个简易的文件下载器功能

利用Python3来实现TCP协议,和UDP类似.UDP应用于及时通信,而TCP协议用来传送文件.命令等操作,因为这些数据不允许丢失,否则会造成文件错误或命令混乱.下面代码就是模拟客户端通过命令行操作服务器.客户端输入命令,服务器执行并且返回结果. TCP(Transmission Control Protocol 传输控制协议):是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义. 使用TCP编写一个简易的文件下载器要求:需编写文件下载器服务端和文件下载器客户

Python网络编程之使用TCP方式传输文件操作示例

本文实例讲述了Python网络编程之使用TCP方式传输文件操作.分享给大家供大家参考,具体如下: TCP文件下载器 客户端 需求:输入要下载的文件名,从服务器端将文件拷贝到本地 步骤: 1.创建TCP套接字,绑定端口 2.连接服务端 3.输入要下载的文件名 4.将文件名编码,并发送到服务端 5.接收服务端返回的数据 6.关闭套接字 代码 # 导入模块 import socket # 创建套接字 tcp_client_socket = socket.socket(socket.AF_INET, s

python使用socket实现的传输demo示例【基于TCP协议】

本文实例讲述了python使用socket实现的传输demo.分享给大家供大家参考,具体如下: socket传输,客户端代码 import socket def main(): tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 服务器位于本机 9999 tcp_client_socket.connect( ("192.168.27.72", 9999) ) # 告诉服务器,我要下载哪一个文件

python3利用tcp实现文件夹远程传输

本文实例为大家分享了python实现文件夹远程传输的具体代码,供大家参考,具体内容如下 实现功能: 通过tcp协议模拟文件夹的下载,注意是文件夹,不是文件. 下面让我们实现以下: 其中有部分功能还未实现有兴趣的可以将代码自行补全 服务器端代码: import os import socket import time # 定义全局列表用来存储子文件夹 list1 = [] def deal_file(files,dir_name,dir_socket): # 如果打开文件时报错即files为文件夹

Python 基于Twisted框架的文件夹网络传输源码

由于文件夹可能有多层目录,因此需要对其进行递归遍历. 本文采取了简单的协议定制,定义了五条命令,指令Head如下: Sync:标识开始同步文件夹 End:标识结束同步 File:标识传输的文件名(相对路径) Folder:标志文件夹(相对路径) None:文件内容 每条命令以CMB_BEGIN开始,以CMB_END结束. 客户端需要对接收缓冲做解析,取出一条一条的指令,然后根据指令的Head做相应的处理,比如创建文件夹.写入文件等. 下面是服务端的代码: from twisted.interne

asp下利用fso实现文件夹或文件移动改名等操作函数

asp利用fso实现文件的移动function movefiles(sFolder,dFolder)     on error resume next     dim fso     set fso = server.createobject("scripting.filesystemobject")     if fso.folderexists(server.mappath(sFolder)) and fso.folderexists(server.mappath(dFolder)

利用Python对文件夹下图片数据进行批量改名的代码实例

1. 前言 我们最近在做一个使用flask 模拟 instagram 的图片分享网站, 需要一些基本的图片数据, 我们这里采用的是本地提供, 但是,使用爬虫从网上爬下来的图片,名字都是乱七八糟的,不利于编程,这里就需要对他们进行批量改名操作. 2. 基本思路 使用python 的os 模块,对文件夹进行遍历(listdir), 同时使用rename 进行改名操作 3. 实现效果 4. 实现代码 代码非常简单 # -*- coding:utf8 -*- import os class BatchR

asp利用fso给文件夹和文件改名的代码

<% Dim fso,f,folder     Set fso=Server.CreateObject("scripting.filesystemobject")     '改目录名     Set folder=fso.getfolder(Server.Mappath("Old"))     folder.name="New" '新名字 '改文件名     Set f=fso.getfile(Server.Mappath("Ol

Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法.下载文件的通用方法以及删除文件.在ftp服务器上传文件夹.检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码: package ftpDemo; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStream; import sun.net

Python 读取指定文件夹下的所有图像方法

(1)数据准备 数据集介绍: 数据集中存放的是1223幅图像,其中756个负样本(图像名称为0.1~0.756),458个正样本(图像名称为1.1~1.458),其中:"."前的标号为样本标签,"."后的标号为样本序号 (2)利用python读取文件夹中所有图像 ''' Load the image files form the folder input: imgDir: the direction of the folder imgName:the name of

linux 下python多线程递归复制文件夹及文件夹中的文件

本文是利用python 复制文件夹 刚开始写了一个普通的递归复制文件夹    然后想了想 觉得对io频繁的程序 threading 线程还比较友好  就写了个多线程版本的  最恶心人的地方就是路径  其他都还好吧 import os import threading import multiprocessing length_of_folder = 0 def copyfile(Path): if os.path.isdir(Path): print("-----------%s" %

python实现遍历文件夹图片并重命名

在做深度学习相关项目时,需要标注图片,筛选过后图片名字带有括号,显得比较乱,因此利用python进行统一规范重命名操作 实现方法是利用python的os模块对文件夹进行遍历(listdir),然后使用rename进行改名操作 代码如下 # -*- coding:utf8 -*- import os class BatchRename(): ''' 批量重命名文件夹中的图片文件 ''' def __init__(self): self.path = 'C:/Users/lenovo/Desktop