IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Python:网络编程、TCP客户端编程 -> 正文阅读

[网络协议]Python:网络编程、TCP客户端编程

TCP客户端编程步骤

客户端编程步骤

  • 创建Socket对象
  • 连接到远端服务器的IP和Port,connect()方法
  • 传输数据
    • 使用send,recv发送、接受数据
  • 关闭连接、释放资源

简单步骤

import socket
client = socket.socket()
ipaddr = ("127.0.0.1",9988)
client.connect(ipaddr)  #直连接服务器

client.send(b"hellow")
send_data = client.recv(1024) #阻塞等待

print(send_data)
client.close()

客户端类

import socket
import threading
import datetime
import logging

# FORMAT = '%%(asctime) %%(threadName)s %(thread)d %(message)s'
logging.basicConfig(level=logging.INFO)

class Clinet_Chart:
    def __init__(self,ip="127.0.0.1",port=9988):
        self.addr= (ip,port)
        self.socker_client = socket.socket()
        self.event = threading.Event()

    def socket_connect(self): #启动对远程服务端的连接
        self.socker_client.connect(self.addr)   #连接远端服务器
        self.socker_client.send(b"I`m comming")
        #装备接受数据,recv时阻塞的,开启新的线程
        threading.Thread(target=self.client_recv,name="client_recv").start()

    def client_recv(self):
        while not self.event.is_set():
            try:
                data = self.socker_client.recv(1024).decode("gbk") #阻塞接受
                logging.info(data)
            except Exception as e:
                logging.info(e)
                break

            recv_msg = '{:%Y%m%d %H:%M:%S} {}:{}\n{}\n'.format(datetime.datetime.now(), *self.addr, data.strip())
            logging.info(recv_msg)

    def client_send(self,recv_msg:str):
        data = "{}\n".format(recv_msg.strip()).encode()   #服务端需要一个换行符
        self.socker_client.send(data)

    def stop(self):
        self.socker_client.close()
        self.event.wait(3)
        self.event.set()
        logging.info("client stops")

def main():
    cc = Clinet_Chart()
    cc.socket_connect()
    while True:
        cmd = input(">>>>>")
        if cmd.strip() == "quit":
            cc.stop()
            break
        cc.client_send(cmd)

if __name__ == '__main__':
    main()

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-05 20:29:39  更:2021-07-05 20:30:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:53:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码