Python--socket浅谈

网络编程中的一个基本组件是套接字,通过套接字向对方发送信息。

套接字分为两类:服务套接字与客户端套接字。创建服务器套接字后,它将在某个网络地址(由IP地址和端口号组成)处监听,知道客户端套接字建立连接。随后,客户端和服务器就能通信了。

1、Python的socket模块

套接字是模块socket中socket类的实例,包含三个参数:

我之所以在socket()函数中没有填入参数,是因为在Python中它已经有了默认参数。

1、family(给定的套接族)一般有两种重要参数:

socket.AF_INET 用于服务器与服务器之间的网络通信
socket.AF_INET6 基于IPV6方式的服务器与服务器之间的网络通信

2、type(套接字类型),也是一般两个类型:

socket.SOCK_STREAM 基于TCP的流式socket通信
socket.SOCK_DGRAM 基于UDP的数据报式socket通信

3、协议(默认值为0就好)

2、服务器与客户端

服务器套接字先调用方法bind,再调用方法listen来监听特定的地址。然后,客户端套接字就可以连接到服务器了,办法是调用方法connect并提供调用方法bind时指定的地址(在服务器端,可以使用函数socket.gethostname获取当前机器的主机名)。这里的地址是一个格式为(host,port)的元组,方法listen接受一个参数--待办任务清单的长度(即最多可有多少个连接在队列中等待接纳,到达这个数量后将开始拒绝连接)。

服务器套接字开始监听后,就可以接受客户端连接了,这是使用方法accept来完成。会返回一个格式为(client,address)的元组,其中client是一个客户端套接字,address是地址。

为了传输数据,套接字提供了send和recv两个方法,send即发送数据,recv即接收数据。

3、利用socket编写简单的服务器和客户端代码

首先先编写服务器相关socket代码

import socket

'''===============服务器================'''
server=socket.socket()
host=socket.gethostname()    #获取主机名
port=1234
server.bind((host,port))     #定义主机名和端口

server.listen(5)             #设置监听

while True:
    c,addr=server.accept()
    print('Got connection from ',addr)
    c.send(b'Thank you for connecting.')     #向客户端发送信息
    c.close()                               #关闭连接

其次再编写客户端相关socket代码

import socket

'''===============客户器================'''
client=socket.socket()

host=socket.gethostname()          #获取主机名
port=1234                          #端口号

client.connect((host,port))        #连接socket_server服务器
print(client.recv(1024))           #打印服务器反馈信息

tips:在运行过程中,首先需要运行服务器代码,再运行客户端代码。

猜你喜欢

转载自blog.csdn.net/BearStarX/article/details/82116310