tcp_demo
代码讲解:
server
import socket def main():
# 创建tcp服务器套接字
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定
load_addr = ('', 8000)
tcp_server.bind(load_addr)
# 监听
print('等待客户端接入...')
tcp_server.listen(128)
# 等待客户端消息
client_socket, client_addr = tcp_server.accept()
print(str(client_addr) + '接入...')
# 接收客户端请求
print('等待客户端消息...')
client_msg = client_socket.recv(1024)
print(client_msg.decode('gbk'))
# 回复客户端消息
client_socket.send('OK'.encode('gbk'))
# 关闭套接字
tcp_server.close()
client_socket.close() if __name__ == '__main__':
main()
client
import socket def main():
# 创建tcp套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 链接
dest_ip = input('请输入对方ip:') # 192.168.6.206
dest_port = int(input('请输入对方port: '))
tcp_socket.connect((dest_ip, dest_port))
while True:
# 发送数据
send_msg = input('请输入要发送的信息: ')
tcp_socket.send(send_msg.encode('gbk'))
# 接收数据
recv_msg = tcp_socket.recv(1024)
print('接收到的数据: ', recv_msg.decode('gbk'))
break
# 关闭套接字
tcp_socket.close() if __name__ == '__main__':
main()
server相对于client的来说,多了绑定、监听和等待客户端消息,另外,接受和回复客户端请求用的都是来自客户端的socket。
server分为这几步:
1、创建服务器套接字tcp
2、绑定ip和端口
3、监听
4、等待客户端消息
5、接受客户端请求
6、回复客户端请求
7、关闭套套接字
client分为这几步:
1、创建tcp套接字
2、链接服务器
3、发送和接受数据
4、关闭套接字
创建tcp服务器套接字
tcp_demo的更多相关文章
- Erlang 103 Erlang分布式编程
Outline 笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期 变更说明 2014-11-23 A Outl ...
随机推荐
- java架构之路-(微服务专题)nacos集群精讲实战
上次回顾: 上次博客,我们主要说了微服务的发展历程和nacos集群单机的搭建,单机需要-m standalone启动,集群建议使用nginx做一下反向代理,自行保证mysql和ngxin的高可用. 本 ...
- SqlServer触发器的基础知识
触发器的基础知识:create trigger tr_name on table/view{for | after | instead of } [update][,][insert][,][dele ...
- VS2015中使用qt开发客户端,QPluginLoader加载dll为null的解决办法
1,问题重现: 使用vs2015开发一款qt软件,使用了QPluginLoader动态加载插件的方式,调试的时候,发现dll模块没有加载进来,debug发现QPluginLoader的instance ...
- Git简易教程(常用命令)
本文章参考了Pro Git 1 Git简介 Linux内核开源项目有着众多参与者,为了提高开发效率,项目组于2002年开始启用分布式版本控制系统BitKeeper来管理和维护代码.在BitKeeper ...
- scanf函数中*修饰符的作用,如:%*d
在scanf函数中,*修饰符可以跳过所在项的输入.如下: #include <stdio.h> int main() { ; printf("请输入:"); scanf ...
- Elasticsearch之文档的增删改查以及ik分词器
文档的增删改查 增加文档 使用elasticsearch-head查看 修改文档 使用elasticsearch-head查看 删除文档 使用elasticsearch-head查看 查看文档的三种方 ...
- Git命令行操作方法
1.GitHub上创建一个Repositories(仓库),并复制仓库地址
- c#学习心得(2)
1.foreach与IEnumerable和IEnumerator的结合使用????? using System; using System.Collections; class Program { ...
- MySQL 8 升级数据库
开始升级前 因为从MySQL 8.0 到MySQL 5.7,或者从MySQL 8.0 到之前的 MySQL 8.0版本都是不支持的.所有在在升级前要做好数据库备份,包括mysql 系统schema(数 ...
- es5和es6创建新数组的方法
//es5 let array = Array(5) let array = [] //es6 1.let array = Array.of(1,2,3,4,5) 2.let array = Arra ...