python写tcp通信程序_一个简单的基于TCP通信的服务器端与客户端程序
一,概述
1,客户端:
创建客户端套接字对象
和服务端套接字建立连接
发送数据
接收数据
关闭客户端套接字
2,服务器端:
创建服务端端套接字对象
绑定端口号
设置监听
等待接受客户端的连接请求
接收数据
发送数据
关闭套接字
二,客户端
1,创建客户端套接字对象
导入import socket;
创建客户端 socket 对象 socket.socket(AddressFamily, Type),其中:
AddressFamily表示IP地址类型, 分为TPv4和IPv6,
Type 表示传输协议类型,
2,客户端套接字对象的方法
connect((host, port)) 表示和服务端套接字建立连接, host是服务器ip地址,port是应用程序的端口号,
send(data) 表示发送数据,data是二进制数据,
recv(buffersize) 表示接收数据, buffersize是每次接收数据的长度,
3,客户端程序
import socket
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建客户套接字
sk.connect(('127.0.0.1', 8898)) # 尝试连接服务器
send_data = "你好服务端,我是客户端小黑!".encode("gbk")
sk.send(send_data)
print(send_data.decode('gbk'))
rev = sk.recv(1024) # 对话(发送/接收)
rev = rev.decode('gbk')
print(rev)
sk.close() # 关闭客户套接字
三,服务器端
1,创建客户端套接字对象
导入import socket;
创建客户端 socket 对象 socket.socket(AddressFamily, Type)
2,服务器端套接字对象的方法
bind((host, port)) 表示绑定端口号, host 是 ip 地址,port 是端口号,ip
地址一般不指定,表示本机的任何一个ip地址都可以。
listen (backlog) 表示设置监听,backlog参数表示最大等待建立连接的个数。
accept() 表示等待接受客户端的连接请求
send(data) 表示发送数据,data 是二进制数据
recv(buffersize) 表示接收数据, buffersize 是每次接收数据的长度
3. 服务器端程序
import socket
if __name__ == '__main__':
count = 0
while True:
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.bind(('127.0.0.1', 8898)) # 把地址绑定到套接字
print("server:正在监听......")
sk.listen(12) # 监听链接
conn, addr = sk.accept() # 接受客户端链接
ret = conn.recv(1024) # 接收客户端信息
ret = ret.decode("gbk")
print(ret) # 打印客户端信息
count += 1
send_data = "你好客户端,我是服务器端小白!这是你第{}次向我打招呼".format(count).encode("gbk")
conn.send(send_data) # 向客户端发送信息
conn.close() # 关闭客户端套接字
sk.close() # 关闭服务器套接字(可选)
四,程序运行
1,先运行服务器端程序:
2,再运行客户端程序:
本文地址:https://blog.csdn.net/dangfulin/article/details/107640513
希望与广大网友互动??
点此进行留言吧!
python写tcp通信程序_一个简单的基于TCP通信的服务器端与客户端程序相关推荐
- python爬b站评论_一个简单的爬取b站up下所有视频的所有评论信息的爬虫
心血来潮搞了一个简单的爬虫,主要是想知道某个人的b站账号,但是你知道,b站在搜索一个用户时,如果这个用户没有投过稿,是搜不到的,,,这时就只能想方法搞到对方的mid,,就是 space.bilibil ...
- java单机应用程序_一个简单的java桌面应用:单机版IFTTT
1.项目背景: ifttt是"if this then that"的缩写,事实上是让你的网络行为能够引发连锁反应.让你使用更为方便.ifttt旨在帮助人们利用各网站的开放API,将 ...
- python云盘搭建教程_超简单!基于Python搭建个人“云盘”,目前最好用的个人云盘...
超简单!基于Python搭建个人"云盘",目前最好用的个人云盘 1. 简介 当我们想要从本地向云服务器上传文件时,比较常用的有pscp等工具,但避免不了每次上传都要写若干重复的代码 ...
- linux tcp文件分包_在Linux下基于TCP协议的文件传输程序.
[设计目的] 通过 Linux C 编程,设计一个基于 TCP/IP 的文件传输系统,实现网络文件的收发 [设计环境] Ubuntu 12.04 [设计方案] ( 1 )文件读写 任意文件都可以二进制 ...
- java 分布式任务_一个简单的基于 Redis 的分布式任务调度器 —— Java 语言实现...
折腾了一周的 Java Quartz 集群任务调度,很遗憾没能搞定,网上的相关文章也少得可怜,在多节点(多进程)环境下 Quartz 似乎无法动态增减任务,恼火.无奈之下自己撸了一个简单的任务调度器, ...
- java实现购买_一个简单的实现购买商品功能的Java小程序
public class Purchase { public static void main(String[] args) { System.out.println(" * * * * * ...
- python自制个人网盘_超简单!基于Python搭建个人“云盘”
1 简介 当我们想要从本地向云服务器上传文件时,比较常用的有pscp等工具,但避免不了每次上传都要写若干重复的代码. 而笔者最近发现的一个基于Python的工具updog,可以帮助我们在服务器上搭建类 ...
- java超市管理系统_一个简单的基于控制台的超市管理系统(java)
一个小菜鸟的成长之路: 废话不多说,直接上干货 首先是java环境:jdk1.10 jdbc驱动:mysql-connector-java-5.1.46.jar 其次是开发软件IntelliJ IDE ...
- android商品数量加减,微信小程序实现一个简单的商品数量加减案例
简介 这是一个用微信小程序原生代码实现的数量加减demo,主要是用于商品购物车或者商品详情修改数量使用,很简单哦~~~. 核心js方法说明addCount(增加数量) delCount (减少数量) ...
最新文章
- 网络营销外包专员浅析网络营销外包如何防止发布的外链被删除呢?
- 夺命雷公狗-----tp中遇到数据乘积的问题的遇见
- currentThread()方法的作用
- IOS开发-关于代码管理工具之SVN
- 如何查询一个进程下面的线程数(进程和线程区别)
- kbengine 的 nginx反向代理https/wss 配置 支持kbe负载均衡
- WIN8系统安装软件时提示“扩展属性不一致“的解决方法
- Scala中的下划线使用总结
- springboot 配置mybatis
- 分库分表工具:Apache ShardingSphere 5.0.0-alpha 发布
- 【图像配准】基于matlab GUI互相关图像配准【含Matlab源码 853期】
- 10天学会c语言与单片机第6讲,10天学会单片机c语言视频
- Scratch 模拟病毒传染小程序
- java的编译路径在哪_如何知道我的java编译器的路径
- 孤独最高境界:这款单人VR游戏竟能带来多人组队体验
- uniapp 集成腾讯云超级播放器问题
- Latex自由设置虚线的作用区间及间距
- 101个著名的管理学及心理学效应
- php ckfinder 无效请求.,解决nginx和php使用ckfinder无法上传大文件的问题
- LA4670 Dominating Patterns(AC自动机)