python的Socket网络编程 使用模板

简介: 相关说明本文给出的是TCP协议的Socket编程。其中用了一个dbmanager数据库操作模块,这个模块是我自己定义的,可以在我的另一个文章中找到这个模块的分享。

相关说明

本文给出的是TCP协议的Socket编程。

其中用了一个dbmanager数据库操作模块,这个模块是我自己定义的,可以在我的另一个文章中找到这个模块的分享。python操作mysql数据库的精美实用模块

服务段完整代码

【如下代码,完全复制,直接运行,即可使用】

import socket
import threading
import json
from tools import dbmanager    #这个模块是我自定义的,可以在我的另一个文章中找到这个模块的分享
###################################
####服务器参数
####################################

HOST = '0.0.0.0'            #ip 0.0.0.0 表示本机所有ip地址
PORT = 9905                 #端口号
Max_Listen =10              #最大监听数
BUFSIZ = 1024               #每次接收数据长度
ENDMARK = "messageover"     #信息结束标记



####################################
####业务处理函数
####################################
def searchuser(sock, dict_data):
    the_searchstring = dict_data['par']
    #########构造sql语句
    sqlstring0 = "SELECT * FROM hr_user WHERE id>0 "

    if the_searchstring != None and the_searchstring != "":
        sqlstring0 = sqlstring0 + " AND (username LIKE '%" + the_searchstring + "%')"

    ########执行数据库查询
    data0 = dbmanager.executeSelectAllback(sqlstring0)
    if data0 == False:
        message = {'action': 'Error_SqlConnet'}
        sock.sendall(json.dumps(message).encode("utf-8"))    ####发送数据给客户端
        return
    if data0 != None:
        message = {'action': 'SearchUser_Success'}
        message['data'] = data0
        sock.sendall(json.dumps(message).encode("utf-8"))    ####发送数据给客户端
        return



####################################
####线程处理函数
####################################
def readRequest(sock, addr):
    print('Accept new connection from %s:%s...' % addr)
    allresponse = ""
    while True:
        ########接收数据
        data = sock.recv(BUFSIZ).decode('utf-8')
        if len(data):
            allresponse = allresponse + data
            if ENDMARK not in allresponse:
                continue
        if allresponse == "":
            break


        ########处理数据
        allresponse =allresponse[:-len(ENDMARK)]
        dict_data = json.loads(allresponse)
        action = dict_data['action']
        if action == "SearchUser":
            searchuser(sock, dict_data)  #业务处理
            break
        elif action == "SearchCompany":
            break                        #业务处理
        else:
            break


    ########关闭连接
    sock.close()
    print('Connection from %s:%s closed.' % addr)








####################################
#程序入口
####################################
if __name__ == "__main__":
    #####创建一个socket
    the_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # AF_INET指定使用IPv4协议  #SOCK_STREAM指定使用面向流的TCP协议

    #####绑定端口
    the_socket.bind((HOST, PORT))

    #####监听端口
    the_socket.listen(Max_Listen)

    print('Waiting for connection...')

    while True:
        # 接受一个新连接
        sock, addr = the_socket.accept()

        # 创建新线程来处理TCP连接
        the_thread = threading.Thread(target=readRequest, args=(sock, addr))
        the_thread.start()
    ####################################

客户端完整代码

【如下代码,完全复制,直接运行,即可使用】

import socket
import json

#############################################################################################
####参数
#############################################################################################
HOST = '127.0.0.1'
PORT = 9905
BUFSIZ = 1024
ENDMARK = "messageover"



#############################################################################################
#######请求处理函数
#############################################################################################
def issueRequest(action, par):
    # 创建一个socket
    the_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 建立连接:
    try:
        the_socket.connect((HOST, PORT))
    except:
        print("服务器连接失败!")
        return

    #############################
    try:
        ########发送数据:
        message = {}
        message['action'] = action
        message['par'] = par
        last_message = json.dumps(message) + ENDMARK  # son.dumps()将 Python 对象编码成 JSON 字符串
        print(message)
        the_socket.sendall(last_message.encode("utf-8"))

        ########接收数据
        allresponse = ""
        while True:
            response = the_socket.recv(BUFSIZ).decode('utf-8')
            if len(response):
                allresponse = allresponse + response
                continue
            if allresponse == "":
                break

            #######处理数据
            dict_data = json.loads(allresponse)  # json.loads()将已编码的 JSON 字符串解码为 Python 对象
            action = dict_data['action']
            if action == "SearchUser_Success":
                data0 = dict_data['data']
                print(data0)
                break
            elif action == "Error_SqlConnet":
                print("数据查询失败!")
                break
            else:
                break
    except:
        print("服务器连接异常,数据查询失败!")
    finally:
        #######关闭连接
        the_socket.close()



####################################
#程序入口
####################################
if __name__ == "__main__":
    the_searchstring ="张三"
    issueRequest("SearchUser", the_searchstring)

本文如有帮助,敬请留言鼓励。
本文如有错误,敬请留言改进。

目录
相关文章
|
16天前
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
在数字时代,网络应用成为连接世界的桥梁。Python凭借简洁的语法和丰富的库支持,成为开发高效网络应用的首选。本文通过实时聊天室案例,介绍Python Socket编程的基础与进阶技巧。基础篇涵盖服务器和客户端的建立与数据交换;进阶篇则探讨多线程与异步IO优化方案,助力提升应用性能。通过本案例,你将掌握Socket编程的核心技能,推动网络应用飞得更高、更远。
32 1
|
12天前
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
在数字宇宙中,网络如同复杂脉络连接每个角落,Python Socket编程则是开启这一世界的钥匙。本文将引导你从基础概念入手,逐步掌握Socket编程,并通过实战示例构建TCP/UDP服务器与客户端。你将学会使用Python的socket模块进行网络通信,了解TCP与UDP的区别,并运用多线程与异步IO提升服务器性能。跟随本文指引,成为网络世界的建筑师,构建自己的网络帝国。
25 2
|
13天前
|
网络协议 Python
告别网络编程迷雾!Python Socket编程基础与实战,让你秒变网络达人!
在网络编程的世界里,Socket编程是连接数据与服务的关键桥梁。对于初学者,这往往是最棘手的部分。本文将用Python带你轻松入门Socket编程,从创建TCP服务器与客户端的基础搭建,到处理并发连接的实战技巧,逐步揭开网络编程的神秘面纱。通过具体的代码示例,我们将掌握Socket的基本概念与操作,让你成为网络编程的高手。无论是简单的数据传输还是复杂的并发处理,Python都能助你一臂之力。希望这篇文章成为你网络编程旅程的良好开端。
37 3
|
12天前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
在网络技术飞速发展的今天,掌握网络编程已成为开发者的重要技能。本文以Python为工具,带你从Socket编程基础逐步深入至进阶领域。首先介绍Socket的概念及TCP/UDP协议,接着演示如何用Python创建、绑定、监听Socket,实现数据收发;最后通过构建简单的聊天服务器,巩固所学知识。让初学者也能迅速上手,成为网络编程高手。
45 1
|
6天前
|
监控 网络协议 数据库连接
Python3 监控端口:使用 socket 库
Python3 监控端口:使用 socket 库
16 0
|
7天前
|
监控 网络协议 数据库连接
Python3 监控端口:使用 socket 库
Python3 监控端口:使用 socket 库
21 0
|
8天前
|
网络协议
关于套接字socket的网络通信。&聊天系统 聊天软件
关于套接字socket的网络通信。&聊天系统 聊天软件
|
5月前
|
程序员 开发者 Python
Python网络编程基础(Socket编程) 错误处理和异常处理的最佳实践
【4月更文挑战第11天】在网络编程中,错误处理和异常管理不仅是为了程序的健壮性,也是为了提供清晰的用户反馈以及优雅的故障恢复。在前面的章节中,我们讨论了如何使用`try-except`语句来处理网络错误。现在,我们将深入探讨错误处理和异常处理的最佳实践。
|
5月前
|
存储 Python
Python网络编程基础(Socket编程) UDP 发送和接收数据
【4月更文挑战第10天】对于UDP客户端而言,发送数据是一个相对简单的过程。首先,你需要构建一个要发送的数据报,这通常是一个字节串(bytes)。然后,你可以调用socket对象的`sendto`方法,将数据报发送到指定的服务器地址和端口。
|
5月前
|
Python
Python网络编程基础(Socket编程) 使用try-except处理网络错误
【4月更文挑战第11天】在网络编程中,错误处理和异常管理是非常重要的部分。网络操作经常因为各种原因而失败,比如网络断开、服务器无响应、地址不正确等。因此,学会如何使用Python的异常处理机制来捕获和处理这些错误,是编写健壮的网络应用的关键。
下一篇
无影云桌面