首页 > 编程 > Python > 正文

Python socket网络编程TCP/IP服务器与客户端通信

2020-02-23 04:13:41
字体:
来源:转载
供稿:网友

Python socket网络编程

初学 python,前段时间买了两本书《python 编程从入门到实践》《Python 核心编程第三版》,第一本书主要讲的是一些基本语法和一些基本的使用方法,而第二本则深入很多,自己看来也是一知半解,刚好看到了这部分网络编程,依然有好多不太理解的地方,不过想来通过自己不断的摸索,不断地搜寻资料学习,早晚应该会变得通透吧.......

这部分主要使用的模块就是 socket 模块,在这个模块中可以找到 socket()函数,该函数用于创建套接字对象,套接字也有自己的方法集,这些方法可以实现基于套接字的网络通信。

socket()模块函数

要创建套接字,必须使用 socket.socket()函数,他一般的语法如下

socket(socket_family, socket_type, protocol=0)

其中socket_family是 AF_UNIX或 AF_INET,socket_type 是 SOCK_STREAM 或 SOCK_DGRAM,protocol 通常省略,默认=0.

所以创建 TCP/IP 套接字,可以使用下面的方式调用 socket.socket().

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

同样创建 UDP/IP 套接字,使用下面的方法调用

udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

创建 TCP 服务器

创建 TCP 服务器的流程基本如下,并非正真正的代码

ss = socket()          #创建服务器套接字    ss.bind()              #套接字与地址绑定    ss.listen()             #监听连接    inf_loop:             #服务器无限循环        cs = ss.accepr()   #接受客户端连接        comm_loop:      #通信循环            cs.recv()/cs.send()   #对话(接收/发送)        cs.close()        #关闭客户端套接字    ss.close()            #关闭服务器套接字(可选)

实际中创建 TCP 服务器基本流程就如上边所说,可能稍有不同但基本思路应该是相通的,下边是真正穿件服务器的代码:

#!/usr/bin/env python# -*- coding: utf-8 -*-from socket import *      #将 socket 属性引入到命名空间HOST = ''          #这是对 bind()方法的标识表示可以使用任何可用的地址PORT = 21571      #端口号BUFSIZ = 1024     #缓冲区大小,1kbADDR = (HOST,PORT)   #地址????tcpSerSocket = socket(AF_INET,SOCK_STREAM)    #创建 tcp 套接字tcpSerSocket.bind(ADDR)           #将地址绑定到套接字上tcpSerSocket.listen(5)            #设置并启动套接字监听while True:        #无限循环,等待客户端连接  print('waiting for connection...')     tcpCliSocket,addr = tcpSerSocket.accept()    #被动接受客户端连接       print('...connected from:',addr)  while True:      #对话循环,等待客户端发送消息    data = tcpCliSocket.recv(BUFSIZ)   #接收客户端消息    if not data:     #如果消息是空白,跳出对话循环,关闭当前连接      break    tcpCliSocket.send(data)   #如果收到消息,将消息原封不动返回客户端  tcpCliSocket.close()tcpSerSocket.close()            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表