首页 > 其他分享 >TCP客户端开发

TCP客户端开发

时间:2023-08-12 19:11:07浏览次数:31  
标签:client socket tcp server 开发 TCP 服务端 客户端

什么是客户端&服务端?

1.TCP网络应用程序开发分为客户端程序开发和服务端程序开发。
2. 主动发起建立连接请求的是客户端程序
3. 等待接受连接请求的是服务端程序

 

TCP客户端开发流程

 

TCP客户端与服务端启动、交换过程:

TCP客户端开发步骤:

  1.创建客户端套接字对象(买电话)
  2.和服务端套接字建立连接(打电话)
  3.发送数据(说话)
  4.接收数据(接听)
  5.关闭客户端套接字(挂电话)

 

涉及socket模块socket类的方法如下:

 

1.  创建socket对象的socket(AddressFamily, Type)方法: client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

2. 创建连接的connect方法

server_address = ('localhost', 8080)
client_socket.connect(server_address)

3. 发送数据send或sendall方法:

message = 'Hello, server!'
client_socket.sendall(message.encode('utf-8'))

4. 接收数据recv方法:

data = client_socket.recv(1024)

5. 关闭socket方法close: 

client_socket.close()

简易示例

import socket

if __name__ == '__main__':
    # 1.创建客户端套接字对象
    tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 2.和服务端套接字建立连接
    '''
    目的信息server_ip = input(“请输入服务器ip:”)
    server_port = int(input(“请输入服务器port:”))
    连接服务器套接tcp_client_socket.connect((server_ip, server_port))
    '''
    tcp_client_socket.connect(("172.16.62.136", 8080))
    # 3.发送数据
    tcp_client_socket.send("nihaome".encode(encoding="utf-8"))
    # 4.接收数据 recv阻塞等待数据的到来
    recv_data = tcp_client_socket.recv(1024)
    print(recv_data.decode())
    # 5.关闭客户端套接字
    tcp_client_socket.close()

 TCP服务端

 开发步骤

  1.创建服务端端套接字对象
  2.绑定IP地址和端口号
  3.设置监听
  4.等待接受客户端的连接请求
  5.接收数据
  6.发送数据
  7.关闭套接字

 

 1 import socket  # 0. 导入socket模块
 2 
 3 
 4 if __name__ == '__main__':
 5     # 1.创建服务端套接字对象
 6     tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 7     # 2. 绑定IP地址和端口号
 8     # tcp_server_socket.bind(("172.16.62.136", 8888))
 9     # 如果bind中的参数第一个ip地址元素设置为"",默认为本机ip地址
10     tcp_server_socket.bind(("", 8888))
11     # 3.设置监听 128:代表服务端等待排队连接的最大数量
12     tcp_server_socket.listen(128)
13     # 4.等待接受客户端的连接请求 accept阻塞等待 返回一个用以和客户端通socket,客户端的地址
14     conn_socket, ip_port = tcp_server_socket.accept()
15     print("客户端地址:", ip_port)
16     # 5.接收数据
17     recv_data = conn_socket.recv(1024)
18     print("接收到的数据:", recv_data.decode())
19     # 6.发送数据
20     conn_socket.send("客户端你的数据我收到了".encode())
21     # 7.关闭套接字
22     conn_socket.close()
23     tcp_server_socket.close()

 

 TCP开发注意事项

 

 

 

标签:client,socket,tcp,server,开发,TCP,服务端,客户端
From: https://www.cnblogs.com/allenxx/p/17624298.html

相关文章

  • 国产MCU-CW32F030开发学习- 移植rtthread-nano
    国产MCU-CW32F030开发学习--移植rtthread-nano硬件平台CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件RT-ThreadNanoRT-ThreadNano是一个极简版的硬实时内核,它是由C语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的RTOS。其内存资源......
  • 【我和openGauss的故事】构建openGauss开发编译提交一体化环境
    大数据模型[openGauss](javascript:void(0);)2023-07-2917:58发表于四川前文本文适合对openGauss源代码有好奇心的爱好者,那么一个友好的openGauss源代码环境应该是怎么样的。openGauss的开发环境是如何设置的?openGauss的编译环境是如何构建的?如何向openGauss提交代码,笔者集合官......
  • 融合科技与医疗:互联网医院小程序的开发策略
    时下,互联网医院小程序正在成为医疗领域的创新亮点。今天,小编将于大家一同讨论如何将科技与医疗融合,开发高效实用的互联网医院小程序或者相关平台。一、背景介绍:互联网医院小程序的兴起随着移动互联网的迅速发展,人们对于医疗服务的需求也在不断增加。正因为现在传统的线下医疗流程存......
  • DDD与我们的传统开发又有什么区别和优势?
    DDD与传统开发相比具有以下区别和优势:领域驱动设计:DDD强调通过领域模型来描述业务领域,将业务逻辑与技术实现分离,使系统更贴近实际业务需求。传统开发往往基于数据库或技术架构进行设计,容易导致业务逻辑分散和混乱。共享知识:DDD鼓励开发团队与领域专家进行密切合作,共同建立领域模型......
  • Vue学习笔记:路由开发 Part 08 导航守卫
    vue-router提供的导航守卫主要用来通过跳转或取消的方式守卫导航。这里有很多方式植入路由导航中:全局的,单个路由独享的,或者组件级的。全局前置守卫可以使用 router.beforeEach 注册一个全局前置守卫。当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航......
  • 微信开发之获取收藏夹列表的技术实现
    简要描述:获取收藏夹内容请求URL:http://域名地址/weChatFavorites/favSync请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是String微信实列IDkeyBuf是byte[]第一次传null,如果接口返回keyBuf第二次传keyBuf返回数据:参......
  • 微信开发之获取收藏夹列表的技术实现
    简要描述:获取收藏夹内容请求URL:http://域名地址/weChatFavorites/favSync请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是String微信实列IDkeyBuf是byte[]第一次传null,如果接口......
  • 微信开发之一键获取标签好友的技术实现
    简要描述:获取标签列表请求URL:http://域名地址/getContactLabelList请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是String登录实例标识请求参数示例{"wId":"349be9b5-8734-45ce-811d-4e10ca568c67"}成功返回......
  • CCLINK转MODBUS-TCP网关cclink模块接线图
    大家好,今天我们要聊的是生产管理系统中的CCLINK和MODBUS-TCP协议,它们的不同使得数据互通比较困难,但捷米JM-CCLK-TCP网关的出现改变了这一切。1捷米JM-CCLK-TCP是一款自主研发的CCLINK从站功能的通讯网关,它的主要功能是将各种MODBUS-TCP设备接入到CCLINK总线中。网关连接到CCLINK......
  • 开发者14个实用网站
    快来免费体验ChatGptplus版本的,体验地址:chat.waixingyun.cn ,新版作图神器已上线 cube.waixingyun.cn/homeTransform.tools地址:transform.tools/transform.tools是一个多功能的网站,可以将各种元素进行转换,例如将HTML转换为JSX,JavaScript转换为JSON,CSS转换为JS对象等等。......