python tcp server client示例代码

这篇具有很好参考价值的文章主要介绍了python tcp server client示例代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

功能: 实现基本的tcp server端、client端,并引入threading, 保证两端任意链接、断链接,保证两端的稳定运行

IP说明: server不输入IP,默认为本机的IP,client需要输入要链接的server端的IP

端口说明:server, client端保持一致

ADB调试说明:在连接数据线的情况下,PC安装ADB调试工具,android端打开ADB调试权限,输入adb forward tcp:12345 tcp:8888, 其中12345为PC端口, 8888为android端口。参数链接:adb forward 参考

server code:

from socket import *
import threading
import time
from typing import Optional

class DataSend(threading.Thread):
    tcp_server = Optional[socket]

    def __init__(self, port):
        threading.Thread.__init__(self, name="data send")
        self.port = port


    def run(self):
        # Creating the socket object
        self.tcp_server = socket(AF_INET, SOCK_STREAM)

        # Binding to socket
        self.tcp_server.bind(('', self.port))  # Host will be replaced/substitued with IP, if changed and not running on host

        # Starting TCP listener
        print('begin listen')
        self.tcp_server.listen(3)
        print('end listen')

        while True:
            # Starting the connection
            print('begin accept')
            clientsocket, address = self.tcp_server.accept()
            print(address, 'accepted!')
            try:
                while True:
                    msg_bits = clientsocket.recv(1024)
                    print(msg_bits.decode('utf-8'))


                    # Message sent to client after successful connection
                    message = 'hello! Thank you for connecting to the server' + "\r\n"
                    clientsocket.send( message.encode('utf-8'))
            except ConnectionResetError:
                continue
            clientsocket.close()


if __name__ == '__main__':
    data_send = DataSend(12345)
    data_send.start()
    while data_send.is_alive():
        time.sleep(1)

client code:文章来源地址https://www.toymoban.com/news/detail-703304.html

import threading
from socket import *
import time
from typing import Optional

class DataRec(threading.Thread):
    tcp_client: Optional[socket]

    def __init__(self, ip, port):
        threading.Thread.__init__(self, name="data rec")
        self.ip = ip
        self.port = port
        self.tcp_client = None

    def wait_tcp_connect(self):
        while self.tcp_client is None:
            time.sleep(1)
            self.tcp_client = socket(AF_INET, SOCK_STREAM)
            try:
                print('try to init client {}:{}'.format(self.ip, self.port))
                self.tcp_client.connect((self.ip, self.port))
                print('client inited!')
            except Exception as e:
                self.tcp_client = None
                print("client init failed, waiting for server!")

    def run(self):
        self.wait_tcp_connect()
        msg_buffer = ''
        while True:
            try:
                time.sleep(1)
                self.tcp_client.send('hello from client'.encode('utf-8'))
                msg_bits = self.tcp_client.recv(1024*8)
                if not msg_bits:
                    continue

                msg_str = msg_bits.decode('utf-8')

                print("rec: {}".format(msg_str))

            except error as msg:
                print('client rec msg catch error({} - {})'.format(error, msg))
                self.tcp_client.close()
                self.tcp_client = None
                self.wait_tcp_connect()
                msg_buffer = ''
            # except Exception as e:
            #     print("client cat other error({})".format(e))



if __name__ == '__main__':
    data_rec = DataRec('127.0.0.1', 12345)
    data_rec.start()
    while data_rec.is_alive():
        time.sleep(1)

到了这里,关于python tcp server client示例代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TCP IP网络编程(四) 基于TCP的服务器端、客户端

    TCP/IP协议栈 ​ TCP/IP协议栈 TCP/IP协议栈共分为4层,可以理解为数据收发分成了4个层次化过程。 ​ TCP协议栈 ​ UDP协议栈 链路层 链路层是物理连接领域标准化的结果,也是最基本的领域,专门定义LAN、WAN、MAN等网络标准。两台主机通过网络进行数据交换,这需要像下图所示

    2024年01月16日
    浏览(51)
  • TCP IP网络编程(五) 基于TCP的服务器端、客户端 (补充)

    回声客户端出现的问题 在上一节基于TCP的服务器端、回声客户端中,存在问题: 如果数据太大,操作系统就有可能把数据分成多个数据包发送到客户端,客户端有可能在尚未收到全部数据包时就调用read函数 问题出在客户端,而不是服务器端,先来对比一下客户端与服务器端

    2024年02月09日
    浏览(63)
  • 《TCP/IP网络编程》阅读笔记--基于TCP的服务器端/客户端

    目录 1--TCP/IP协议栈 2--TCP服务器端默认函数调用顺序 3--TCP客户端的默认函数调用顺序 4--Linux实现迭代回声服务器端/客户端 5--Windows实现迭代回声服务器端/客户端 6--TCP原理 7--Windows实现计算器服务器端/客户端         TCP/IP协议栈共分 4 层,可以理解为数据收发分成了 4 个层

    2024年02月10日
    浏览(59)
  • JavaEE & UDP简易翻译服务器 & 网络编程示例2 & TCP回显服务器,回显客户端

    禁止白嫖 T T 点点赞呗 这个翻译器主要是在上一章的回显服务器和回显客户端上进行修改 修改了计算响应的过程, 即process方法 1.1 重写方法 重写方法是Java中的一种重要手段 指在一个类的子类里,对父类的一个方法进行重新定义! 而父类的权限级别要大于等于子类~ 【除了

    2023年04月16日
    浏览(56)
  • unreal engine c++ 创建tcp server, tcp client

    TCP客户端 TcpConnect.h TcpConnect.cpp tcp server cpp FTcpServerReceive h cpp 在 GameInstance 使用

    2024年02月14日
    浏览(49)
  • Socket网络编程(TCP/IP)实现服务器/客户端通信。

    一.前言 回顾之前进程间通信(无名管道,有名管道,消息队列,共享内存,信号,信号量),都是在同一主机由内核来完成的通信。 那不同主机间该怎么通信呢? 可以使用Socket编程来实现。 Socket编程可以通过网络来实现实现不同主机之间的通讯。 二.Socket编程的网络模型如

    2024年02月08日
    浏览(83)
  • 【TCP/IP】多进程服务器的实现(进阶) - 多进程服务器模型及代码实现

             经过前面的铺垫,我们已经具备实现并发服务器的基础了,接下来让我们尝试将之前的单任务回声服务器改装成多任务并发模式吧!         在编写代码前,先让我们大致将多任务(回声)服务器的模型抽象一下,如下图所示:         当客户端请求服务(

    2024年02月08日
    浏览(148)
  • 《TCP/IP网络编程》阅读笔记--基于UDP的服务器端/客户端

    目录 1--TCP和UDP的主要区别 2--基于 UDP 的数据 I/O 函数 3--基于 UDP 的回声服务器端/客户端 4--UDP客户端Socket的地址分配 5--UDP存在数据边界 6--UDP已连接与未连接的设置 ① TCP 提供的是可靠数据传输服务,而 UDP 提供的是不可靠数据传输服务; ② UDP 在结构上比 TCP 更简洁,其不会

    2024年02月09日
    浏览(58)
  • Linux网络编程之TCP/IP实现高并发网络服务器设计指南

    目录 引言: 多进程服务器 例程分享: 多线程服务器  例程分享: I/O多路复用服务器 select 例程分享: poll 例程分享: epoll 例程分享: 总结建议         随着互联网的迅猛发展,服务器面临着越来越多的并发请求。如何设计一个能够高效处理大量并发请求的服务器成为

    2024年02月20日
    浏览(51)
  • TwinCAT3 Modbus-TCP Client/Server使用

    目录 一、环境配置和准备 1、PLC中安装TF6250-Modbus-TCP库 2、勾选TF6250的license 3、PLC工程中添加Tc2_ModbusSrv库文件 4、分别创建测试ModbusTCP测试的Server和Client程序 二、PLC作为Client端 1、设置测试电脑IP地址 2、运行MobusTCP测试工具 3、PLC端程序编写 (1)读取离散量输入 (2)读取线圈

    2024年01月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包