5-tcp套接字服务端编程
import socket
1.创建套接字
sockfd= socket.socket(socket_family = AF_INIT,socket_type=SOCK_STREAM,proto)
功能:创建套接字
参数: socket_family:选择地址族类型 AF_INET
socket_type: 套接字类型 SOCK_STREAM 流式
SOCK_DGRAM 数据报
proto:选择子协议类型 通常为0
返回值:返回套接字对象
2.绑定服务端地址
sockfd.bind(addr)
功能:绑定IP地址
参数:元祖(IP,port)
localhost 可以被本机用 127.0.0.1
127.0.0.1 同上
192.168.205.127 可以被别人用192.168.205.127访问
0.0.0.0 可以被别人用192.168.205.127访问
也可被自己用 127.0.0.1访问
3.设置监听套接字
sockfd.listen(n)
功能:将套接字设置为监听套接字,创建监听队列。
参数:n表示监听队列大小。
*一个监听套接字可以连接多个客户端套接字。
4.等待处理客户端连接请求
connfd,addr= sockfd,addept()
功能:阻塞等待处理客户端连接。
返回值:connfd 客户端连接套接字
addr 连接的客户端地址
*阻塞函数:程序运行的过程中遇到阻塞函数则暂停运行,知道某种阻塞条件达成再继续运行。
5.消息收发
connfd.recv(buffersize)
功能:接受对应客户端消息
参数:一次最多接受多少字节
返回值:接收到的内容。
*没有消息则会阻塞。
n = connfd.send(data)
功能:发送消息给对应客户端
参数:要发送的内容,必须是bytes格式。
返回值:返回实际发送消息的大小。
6.关闭套接字
#tcp_server.py from socket import * #创建套接字 sockfd = socket(AM_INIT,SOCK_STREAM) #创建地址 socket.bind((0.0.0.0),8888) #设置监听 sockfd.listen(5) #等待接受链接 print("waiting") connfd,addr = sockfd,accept() print('connect from',addr) #收发消息 data = connfd,recv(1024) print(data) n = connfd.send(b'receive your message') #关闭套接字 connfd.close() sockfd.close()