热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Socket网络编程,实现server/client

UDPclientimportsocketssocket.socket(socket.AF_INET,socket.SOCK_DRGAM)#AF_INET用于Internet进程通

UDP

client

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DRGAM) # AF_INET 用于Internet进程通讯,AF_UNIX 用于同一台机器的线程通讯;
# SOCK_STREAM (流式套接字,主要用于TCP 协议)
# SOCK_DGRAM (数据报套接字, 主要用于UDP协议)
s.sendto('hello'.encode('utf8'), ('0.0.0.0', 8080)) # 第一个参数是要发送的数据,二进制格式;第二个是目标ip及端口号,是一个元组。
s.close()

server

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DRGAM)
s.bind(('0.0.0.0', 8080))
cOntent= s.recvfrom(1024) # 接收长度
print('从{} 端口{} 接收到{}'.format(content[1][0],content[1][1],content[0]))
s.close()

TCP

client

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('0.0.0.0', 8080)) # 注意目标服务器此时必须是启动的,否则会报错,tcp 要先连接成功了,才发数据
s.sent('hello'.encode)
s.close()

server

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 8080))
s.listen(128) # 监听,把socket 变成一个被动监听socket
client_socket, client_addr = s.accept()
x = client_socket.recv(1024) # 每次拿长度
print('接收到的了{}客户端{}端口号发送的数据,内容是:{}'.format(client_addr[0], client_addr[1], x))

下载文件

client

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('0.0.0.0', 8080))
file_name = input('请输入要下载的文件名: ')
s.sent(file.name.encode('utf8'))
with open(file_name, 'wb') as file:
cOntent= s.recv(1024)
if not content:
break
file.write(content)
s.close()

server

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STRAM)
s.bind(('0.0.0.0', 8080))
client_socket, client_addr = s.accept()
filename = client_socket.recv(1024).decode('utf8')
print('接收到了来着{}:{}的数据,内容是:{}'.format(client_addr[0], client_addr[1], filename))
if os.path.isfile(filename):
# print('watting sending')
with open(filename, 'rb') as file:
# print(file.read())
cOntent= file.read()
client_socket.send(content)
else:
print('file not exist')

参考:

2020千锋Python入门视频全套全开源(最新版)

python之socket编程



推荐阅读
  • python3+tkinter实践历程(四)——模仿CRT完成基于socket通信与tkinter的TCP串口客户端
    python3tkinter实践历程(四)——基于socket通信与tkinter的TCP串口客户端(仿CRT)文章目录系列文章目录分享背景制作背景最终功能工具截图展示代码详解系列 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 1、Ipv4只能用于内网,外网只能用2、DNS:把域名解析成ip地址3、MAC地址就是物理地址(网卡序列号)   IP地址:电脑序列号4、不同电脑,微信之间互相通信,靠的是端口;  ... [详细]
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼*madebyebhrz*#include#include#include#include#include#include#include ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了在Python中使用zlib模块进行字符串的压缩与解压缩的方法,并探讨了其在内存优化方面的应用。通过压缩存储URL等长字符串,可以大大降低内存消耗,虽然处理时间会增加,但是整体效果显著。同时,给出了参考链接,供进一步学习和应用。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有