Python实现socket

转自:Python3萌新入门笔记(51)

socket模块

server端

注:监听之后后面部分就在循环里进行等待多客户端连接和收发消息
1、导入包

import socket

2、创建套接字:socket.socket()
有几个参数可以设置:地址族、套接字类型、协议号:

  • 地址族:默认为socket.AF_INET,指定使用IPv4 网络协议;如果填入socket.AF_INET6,则能够使用IPv6 网络协议。
  • 套接字类型:默认为socket.SOCK_STREAM,指定使用TCP协议的套接字流类型;如果填入socket.SOCK_DGRAM,则是使用UDP的套接字数据报类型。
  • 协议号:默认为0。
server_socket = socket.socket() #创建套接字

3、设置本地IP和端口号

host = '127.0.0.1'
port = 2020

4、绑定IP和port:bind()

server_socket.bind((host,port)) #套接字对象绑定IP与port

5、监听:listen()

server_socket.listen(5) #设置套接字最大等待连接数5

6、接收来自客户端的连接请求:accept(),获取服务器端与客户端通信的ssl通道ssl和客户端地址addr

while True:
	print("等待连接...")
	ssl,addr = server_socket.accept() #获取服务器端的SSL通道和远程客户端地址
	print("连接到:",addr)

7、收发消息:recv() send()

	recv_buf = ssl.recv(1024).decode() #获取客户端发来的消息
	ssl.send("欢迎来自{0}的{1}".format(addr,recv_buf).encode()) #通过ssl通道像客户端发送消息

8、关闭:close()

	print('关闭连接....')
	ssl.close() #关闭ssl通道
client端

1、导入包

import socket

2、创建套接字:socket.socket()

server_socket = socket.socket() #创建套接字

3、设置IP和端口号

host = '127.0.0.1'
port = 2020

4、像服务端请求连接:connect()

client_socket.connect((host,port))

5、收发消息

client_socket.send('123'.encode())
print('接收消息:',client_socket.recv(1024).decode())
阻塞的网络编程

上述的方法是阻塞的网络编程,在一个客户端连接关闭之后才能进行另一个客户端的连接。
思路:想要实现非阻塞的(异步)网络编程,多线程技术,将连接的客户端ssl和addr存于字典或列表中。

猜你喜欢

转载自blog.csdn.net/weixin_42040046/article/details/105041088