本文主要是介绍网络编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
加入链接循环和通信循环基于TCP协议的套接字编程
服务端
# socket是模块名
import socket
# from socket import socket
# 第一个socket是模块名, 第二个socket是类名
# SOCK_STREAM => 基于TCP协议写的
# server = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
# 不传就代表tcp协议
server = socket.socket()
# 绑定监听的地址
server.bind(('127.0.0.1', 8081))
# listen监听, 半连接池, 强调:可不是同时服务5个
server.listen(5)
# 接收消息
print("正在接收客户端消息:")
while True:
# sock 当前连接对象 addr 客户端的地址 ip+port
sock, addr = server.accept()
print(sock)
print(addr)
# 1024 bytes
while True:
# 客户端非正常断开,需要捕捉异常
try:
data = sock.recv(1024)
if len(data) == 0: # 当客户端主动断开时,接收的数据为空
break
print(data)
sock.send(data.upper())
except Exception as e:
print(e)
break
sock.close()
server.close()
客户端
# 客户端
import socket
client = socket.socket()
client.connect(('127.0.0.1', 8081))
while True:
input_data = input('请输入要传输的数据:(q to quit)').strip()
if not input_data:continue
if input_data =='q':
break
client.send(input_data.encode('utf-8'))
# 接收服务端返回的结果
data = client.recv(1024)
print(data)
client.close()
基于UDP协议的套接字编程
服务端
import socket
# SOCK_DGRAM =》 udp服务端
# SOCK_STREAM =》 tcp服务端
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8080))
while True:
# client_addr: 客户端地址
data, client_addr = server.recvfrom(1024)
print(data)
print(client_addr)
server.sendto(data.upper(), client_addr)
server.close()
客户端
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 数据报协议-》UDP
while True:
msg = input('>>: ').strip() # msg=''
client.sendto(msg.encode('utf-8'), ('127.0.0.1', 8080))
# 接收服务端返回的数据
data, server_addr = client.recvfrom(1024)
print(data)
client.close()
进程
进程的概念
进程是系统进行资源分配和调度的基本单位
程序和进程:
程序是静态的,没有生命周期
进程是动态的,是有生命周期的
协程
进程是操作系统分配资源的基本单位,线程是操作系统执行的最小单位
进程不是实际干活的人,真正干活的是线程
进程的三种状态:
就绪态:
运行态
阻塞态
这篇关于网络编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!