python | 网络编程(socket、udp、tcp)

一、套接字 socket

1.1 作用:实现不同主机间的进程间通信(不同电脑、手机等设备之间收发数据)

1.2 分类:udp、tcp

1.3 创建 socket

 import socket
socket.socket(AddressFamily, Type)

  AddressFamily:AF_INET:用于网络间进程通信;AF_UNIX:用于同一台机器中

  Type:SOCK_DGRAM:upd 协议使用;SOCK_STREAM:tcp 协议使用

二、upd socket

2.1 创建 udp socket,并使用其收发数据

 import socket

 # 创建 udp 套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定本地信息,bind后面的()里一定要是个元组!!元组!!
udp_socket.bind(("", 7890)) # 获取要发送的内容
send_msg = input("请输入要发送的内容:") # 使用 udp 发送数据,
udp_socket.sendto(send_msg.encode("utf-8"), ("192.168.xxx.xxx", 9090)) # 接收数据,1204表示一次最多接收1024个字节
recv_data = udp_socket.recvfrom(1024)
recv_msg = recv_data[0] # 所接收的数据内容
recv_addr = recv_data[1] # 远程地址 # 打印远程发送来的信息
# 如果是从 windows 发来的数据要用 gbk解码
print(str(recv_addr) + ":" + recv_msg.decode("gbk")) udp_socket.close()

三、tcp socket

  tcp 套接字分为服务器和客户端

3.1 创建  socket,无论客户端和服务器都要写

1 import socket
2
3 # 创建 tcp 的套接字
4 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
5
6 # 关闭套接字
7 tcp_socket.close()

 

3.2 创建 tcp 客户端 socket,并使用其收发数据

 import socket

 # 创建套接字
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器(!!!区分udp)
tcp_client_socket.connect(("192.168.0.102", 7891)) # 获取要发送的信息
send_msg = input("请输入要发送的信息:") # 发送信息
tcp_client_socket.send(send_msg.encode("utf-8")) # 接收返回来的数据
recv_msg = tcp_client_socket.recv(1024) tcp_client_socket.close()

3.3 创建 tcp 服务器 socket,并使用其收发数据即:(即:为客户端服务)

 import socket

 # 创建套接字
tcp_ser_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定本地信息
tcp_ser_socket.bind(("", 7890)) # 变为被动监听套接字(listen)
tcp_ser_socket.listen(128) # 等待客户端的链接(accept)
client_socket, client_addr = tcp_ser_socket.accept() # 为链接来的客户端服务,接收客户端发来的数据
recv_data = client_socket.recv(1024) # 返回数据给客户端,不用再写客户端的地址端口
# client_socket.send("hhhhhh".encode("utf-8"),client_addr)
client_socket.send("hhhhhh".encode("utf-8")) # 关闭套接字
client_socket.close() # 关闭服务器方打开的客户端的套接字
tcp_ser_socket.close() # 一般不关,关了怎么服务

挥手握手待补充

【本文仅作为学习笔记】

上一篇:python按引用赋值和深、浅拷贝


下一篇:Beta版本冲刺计划安排