网络通信
1、创建socket
import socket socket.socket(addressFamily,Type)
addressFamily:可以选择AF_INET(用于internet进程间通信)或者AF_UNIX(用于同一台机器进程间通信),实际使用AF_INET
Type:套接字类型, 1、SOCK_STREAM:用于TCP协议 2、SOCK_DGRAM:用于UDP协议
2、套接字使用流程
1、创建套接字
2、使用套接字首发数据
3、关闭套接字
3、udp客户端
import socket # 1、创建套接字 udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 2、接收方地址 address = ('127.0.0.1',8080) # 3、输入发送数据 send_date = input('请输入要发送的数据:') # 4、发送数据, udp_socket.sendto(send_date.encode('utf-8'),address) # 5、关闭套接字 udp_socket.close()
4、udp服务端
import socket # 创建桃姐字 udp_server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 绑定端口 local_addr = ('',8080) udp_server.bind(local_addr) # 接收消息 recv_date = udp_server.recvfrom(1024) # 打印接受消息 print(recv_date) print(recv_date[0].decode('utf-8')) # 关闭套接字 udp_server.close(
5、tcp客户端
from socket import * # 创建套接字 tcp_socket = socket(AF_INET,SOCK_STREAM) # 目的信息 ip = input('请输入服务器ip地址:') port = int(input('请输入服务端口:')) # 链接服务器 tcp_socket.connect((ip,port)) # 输入要发送的数据\ while True: send_date = input("请输入要发送的数据:") tcp_socket.send(send_date.encode('utf-8')) # 接收对方发过来的数据 recv_date = tcp_socket.recv(1024) # 打印接收到的数据 print(recv_date.decode('utf-8')) # 关闭套接字 tcp_socket.close()
6、tcp服务端
from socket import * # 创建套接字 socket_server = socket(AF_INET,SOCK_STREAM) # bind绑定ip和 port address = ('',7788) socket_server.bind(address) # listen使套接字变为被动连接 socket_server.listen(128) # accept 等待客户端的链接 client_socket, clientaddr = socket_server.accept() # 收 发数据 while True: recv_date = client_socket.recv(1024) print(recv_date.decode('utf-8')) sentdate = input("请输入回复:") client_socket.send(sentdate.encode('utf-8')) # 关闭这个客户端的套接字 client_socket.close()