首页 > 编程语言 >Python基础——网络编程

Python基础——网络编程

时间:2023-06-14 18:35:31浏览次数:30  
标签:socket Python 服务器端 编程 网络 请求 接字 客户端


在网络编程中主要是使用Socket(套接字)进行编程,套接字相当于应用程序访问下层网络的服务的接口,使用Socket可以是得不同主机之间进行通信,从而实现数据交换。

1、Socket工作方式

套接字在工作的时候连接的两端分别为客户端和服务器端,对于客户端和服务器端的工作方式是不一样的。

对于服务器端,服务器程序会在一个端口上监听服务请求,该服务器进程是一直存在的,当有客户端请求访问时,服务器进程会和客户端进程进行通信。

在Python中的套接字模块是socket模块。

2、服务器端

在上述的Socket工作原理中,服务器端程序会在一个端口上监听请求服务,当有客户端请求访问时,才和客户端进程进行通信。在Python中提供的socket模块可以较为方便的实现基本的原理。对于服务器端,当生成了套接字对象后,要实现与客户端进行通信,有如下的一些步骤:

  • 调用bind()方法绑定一个套接字端口地址
  • 使用listen()方法对该端口进行客户端请求的监听
  • 当有客户端请求时,通过accept()方法生成一个连接对象,通过该连接对象发送和接受数据
  • 当数据传输完毕,调用close()方法将生成的连接关闭

利用Python实现一个简单的服务器端程序:

#coding:UTF-8

import socket

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

s.bind(('127.0.0.1', 1234))

s.listen(10)

while True:
    c, addr = s.accept()

    print "client address: ", addr
    c.send("Welcome!!!")

    c.close()

3、客户端

与服务器端相对应,客户端请求服务器端的访问,当服务器端接受了客户端的请求后,便可以与服务器端进行通信。客户端程序在生成套接字对象后的基本过程如下:

  • 调用bind()方法绑定自己的请求套接字地址(该步骤可选)
  • 调用connect()方法连接服务器端的进程
  • 当连接成功后,可使用send()方法发送数据,使用recv()函数接收数据
  • 当数据传输结束后,可调用close()方法关闭连接

利用Python实现一个简单的客户端程序:

#coding:UTF-8

import socket

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

s.bind(('127.0.0.1', 2345))

s.connect(('127.0.0.1', 1234))#连接的是主机的地址和端口地址

info = s.recv(1024)
print info

s.close()

运行结果如下:

  • 服务器端

Python基础——网络编程_服务器端

  • 客户端

Python基础——网络编程_python_02


标签:socket,Python,服务器端,编程,网络,请求,接字,客户端
From: https://blog.51cto.com/u_16161414/6479843

相关文章

  • Python中时间与时间戳之间的转换
    对于时间数据,如2016-05-0520:28:54,有时需要与时间戳进行相互的运算,此时就需要对两种形式进行转换,在Python中,转换时需要用到time模块,具体的操作有如下的几种:将时间转换为时间戳重新格式化时间时间戳转换为时间获取当前时间及将其转换成时间戳1、将时间转换成时间戳将如上的时间2016......
  • 软件测试|教你用Python处理PDF文件(一)
    前言点击获取更多技术资料!我们在工作中,难免会遇到需要处理PDF文件的情况,PDF文件与Word文件不同,内容提取不是很容易,表格和图片都需要特别处理。不过PDF有一个优势,PDF可以跨平台使用,Windows系统,Mac系统都可以打开PDF文件,不像doc文件,需要在word或者类似的软件中才能打开。但是PDF......
  • python nohup 远程运行不宕机方法
    远程运行最怕断电,训练了几个小时的数据说没就没,或者停止运行。用nohup记录代码的输出,还可以不受断电的影响。方法1.用nohup运行一个python文件nohuppython-umain.py>nohup.out2>&1&除了main.py换成自己的文件名,nohup.out也可以改为其他名字,nohup1.out等。其余照搬。不......
  • python GUI+爬虫——12306抢票软件(2)
    这部分主要是项目环境的配置,下图是概览1.基于项目的虚拟环境--pipenv1.1简介1.2安装pipinstallpipenv, 检查安装状态:pipenv--version 我的系统是mac,该项目使用Windows10开发更好1.3创建项目的虚拟环境,使用pycharm1.4创建完后修改安装源,修改位置为pipfile文件修改:来源修......
  • GUI编程--基于PyQt5(1)
    该系列主要介绍GUI编程的一些知识,来自网易课堂,王顺子课程。这部分主要是一些基础介绍,包括以下内容:GUI全称为:GraphicalUserInterface=  图形化用户接口简单理解就是:-使用Python开发出一个软件的界面,-让用户可以通过软件界面与软件进行交互;python有那些库支持GUI:我们......
  • GUI编程--基于PyQt5(3)
    本部分进入实战,尝试着写一个简单地界面,内容如图所示:箭头为要实现的内容,包括logo,名称,最小/大化,关闭程序,内容。1.首先创建一个py文件,如下图:2.敲代码:不要管每句话是什么意思,先实现,后面老师(王顺子)会具体讲的。fromPyQt5.Qtimport*importsysapp=QApplication(sys.argv)windo......
  • javascript现代编程系列教程之五——正零和负零
    在JavaScript中,正零(+0)和负零(-0)都代表数值0,它们在大多数情况下是等价的。然而,在某些特定的场景下,正零和负零的行为会有所不同。除法操作:当0被用作除数时,正零和负零会产生不同的结果:console.log(42/+0);//输出:Infinityconsole.log(42/-0);//输出:-InfinityObject......
  • python偏函数学习笔记
    Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partialfunction)比如,int函数默认十进制转换,若提供其它base参数,就可以进行n进制转换int('12345',base=8)5349int('12345',16)74565定义一个int2()的函数,默认把base=2传进去defint2(x,base=2):retu......
  • python高阶函数filter、sorted学习笔记
    filterPython内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。e.g在一个list中,删掉偶数,只保留奇数,可以这么写:点击查看代码de......
  • 《Java并发编程的艺术》pdf电子书免费下载
    《Java并发编程的艺术》正是为了解决这个问题而写的。书中采用循序渐进的讲解方式,从并发编程的底层实现机制入手,逐步介绍了在设计Java并发程序时各种重要的技术、设计模式与应用,同时辅以丰富的示例代码,使得开发人员能够更快地领悟Java并发编程的要领,围绕着Java平台的基础并发功能......