1.socket参数
socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None)
familt:
AF_INET:网络文件套接字,默认
AF_UNIX:本地文件套接字
type:
SOCK_STREAM:TCP协议,默认
SOCK_DGRAM:UDP协议
proto:通常为0
fileno:通常为None
2.TCPsocket常用方法
TCP socket | client | server |
实例化 | sk = socket.socket() | sk = socket.socket() |
绑定地址 | / | sk.bind(('127.0.0.1',8888)) |
连接地址 | sk.connect(('127.0.0.1',8888)) | / |
接收请求 | / | conn,addr = sk.accept() |
发送消息 | sk.send('hello!'.encode('utf-8')) | conn.send('hi'.encode('utf-8')) |
接收消息 | ret = sk.recv(1024) | ret = conn.recv(1024) |
关闭client | / | conn.close() |
关闭server | sk.close() | sk.close() |
3.UDPsocket常用方法
UDPsocket | client | server |
实例化 | sk = socket.socket(type=socket.SOCK_DGRAM) | sk = socket.socket(type=socket.SOCK_DGRAM) |
绑定地址 | / | sk.bind(('127.0.0.1',8888)) |
接收消息 | message,ip = sk.recvfrom(1024) | message,ip = sk.recvfrom(1024) |
发送消息 | sk.sendto(str,ip) | sk.sendto(str,ip) |
断开连接 | sk.close() | sk.close() |
2.基于TCP协议的服务端和客户端
#服务端
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',8888)) #把地址绑定到套接字,IP为字符串,端口为数字
sk.listen() #监听此连接
conn,addr = sk.accept() #接受客户端链接
ret = conn.recv(1024) #接收客户端信息,指定接收的字节
print(ret) #打印客户端发来的信息
conn.send('hi'.encode('utf-8')) #向客户端发送信息,编码为字节形式
conn.close() #关闭客户端套接字
sk.close() #关闭服务器套接字(可选)
#客户端
import socket
sk = socket.socket() # 创建客户套接字
sk.connect(('127.0.0.1',8898)) # 尝试连接服务器
sk.send('hello!'.encode('utf-8')) #发送消息,以字节形式发送
ret = sk.recv(1024) # 接收回信
print(ret)
sk.close()