Java教程

网络编程

本文主要是介绍网络编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

加入链接循环和通信循环基于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()

进程

进程的概念

    进程是系统进行资源分配和调度的基本单位

    程序和进程:
        程序是静态的,没有生命周期
        进程是动态的,是有生命周期的

    协程
    进程是操作系统分配资源的基本单位,线程是操作系统执行的最小单位
    进程不是实际干活的人,真正干活的是线程


    进程的三种状态:
        就绪态:
        运行态
        阻塞态
这篇关于网络编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!