python3学习笔记八(TCP/UDP套接字编程)

本文记录python网络编程中关于TCP套接字编程的客户端和服务端的框架,以及UDP套接字编程的客户端和服务端的框架

TCP套接字编程

TCP套接字编程是基于TCP三次握手和四次挥手的基础上,因此在数据传输前需要建立连接,
那么TCP套接字编程的服务端和客户端端的工作流程如下所示

这里写图片描述

基础服务端框架
'''
服务端框架1.0
'''
import socket


def tcp_server():
    '''
    练习套接字编程
    :return:
    '''
    sockfd = socket.socket(socket.AF_INET, socket.SOCK_STREAM, proto=0)
    #绑定ip和端口
    sockfd.bind(('127.0.0.1', 8888))
    #设置监听
    sockfd.listen(5)
    #等待客户端连接
    print("waiting for connect....")
    connfd, addr = sockfd.accept()
    print("connect from ",addr)
    #收消息
    data = connfd.recv(1024)
    print("Receive message >>",data)

    #发消息
    n = connfd.send(b'receive your message\n')
    #print("Send %d bytes data"%n)

    #关闭套接字
    connfd.close()
    sockfd.close()

if __name__=="__main__":
    tcp_server()
    pass
基础客户端框架
'''
客户端框架1.0
'''

import socket


def tcp_client():
    '''
    练习套接字编程
    :return:
    '''
    sockfd = socket.socket(socket.AF_INET, socket.SOCK_STREAM, proto=0)
    #建立连接
    sockfd.connect(('127.0.0.1', 8888))

    #发消息
    data = input("send>>")
    sockfd.send(data.encode())


    #接受消息
    data2 = sockfd.recv(1024)
    print(data2)



    #关闭套接字

    sockfd.close()

if __name__=="__main__":
    tcp_client()
    pass
循环接入服务端
'''
服务端框架
'''
import socket

def tcp_server():
    '''
     练习套接字编程
     实现服务器不退出,可以一直接入客户端
     :return:
     '''
    sockfd = socket.socket(socket.AF_INET, socket.SOCK_STREAM, proto=0)
    # 绑定ip和端口
    sockfd.bind(('127.0.0.1', 8888))
    # 设置监听
    sockfd.listen(5)
    # 等待客户端连接
    # flag_service = True
    while True:
        print("waiting for connect....")
        connfd, addr = sockfd.accept()
        print("connect from ", addr)
        while True:
            # 收消息
            data = connfd.recv(1024)
            print("Receive message >>", data)
            if not data:
                break
            # 发消息
            n = connfd.send(b"receive your message\n")
        # 关闭套接字
        connfd.close()
    sockfd.close()
    pass

if __name__=="__main__":
    tcp_server()
    pass
客户端循环发消息
'''
客户端框架
'''

import socket


def tcp_client():
    '''
    练习套接字编程
    客户端循环发消息,当输入回车时退出
    :return:
    '''
    sockfd = socket.socket(socket.AF_INET, socket.SOCK_STREAM, proto=0)
    #建立连接
    sockfd.connect(('127.0.0.1', 8888))

    #发消息
    #flag_client = True
    while True:

        data = input("send>>")
        if not data :
            break

        sockfd.send(data.encode())


        #接受消息
        data2 = sockfd.recv(1024)
        #print(data2)



    #关闭套接字

    sockfd.close()
    pass


if __name__=="__main__":
    tcp_client()
    pass

猜你喜欢

转载自blog.csdn.net/patrisk/article/details/81126241