代码讲解:

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的更多相关文章

  1. Erlang 103 Erlang分布式编程

    Outline 笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期              变更说明 2014-11-23 A Outl ...

随机推荐

  1. C++中STL库函数的基本运用

    学了这么长时间的STL库,现在我觉得是有必要对过去的题目和所遇到的问题做一下整理了,以便于之后更好的展开练习: 一. 为什么要用STL库? 1.简单粗暴(省事). 2.便于解决复杂的问题(在贪心题目中 ...

  2. Docker可视化管理工具Portainer

    Portainer介绍 Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容器控制台 ...

  3. coroutine - 示例

    分享流畅的python一书, coroutine 章节中的出租车仿真的例子. from collections import namedtuple import queue import random ...

  4. Redis中RDB和AOF持久化区别和联系

    RDB和AOF持久化   ​RDB持久化 RDB是什么? 原理是redis会单独创建(fork) 一个与当前进程一模一 样的子进程来进行持久化,这个子进程的所有数据(变量.环境变量,程序程序计数器等) ...

  5. Debian 10 或Ubuntu 安装后启动黑屏解决办法

    对于双显卡设备,很有可能是开源显卡驱动异常导致无法启动,在启动参数那一行加上 nouveau.modeset=0 禁用nouveau驱动即可进入系统

  6. git命令小汇总和github

    Git 简介 是什么 Git 也是一个版本控制管理软件 有什么用,可以解决什么问题 保存历史记录 多人协作 有了 SVN,为啥要学 Git Git 火 Git 相对于 SVN 来说,更强大,用户也非常 ...

  7. RAID | 故障处理

    RAID | 故障处理 Unconfigured(good), Spun Up 背景:磁盘替换后在导入外部配置时提示失败,磁盘状态如题. MegaCli -pdgetmissing -a0查看miss ...

  8. 【python基础语法】国庆扩展练习题

    ''' 一.国庆知识小拓展 1. 用户登陆程序需求: 1. 输入用户名和密码; 2. 判断用户名和密码是否正确? (name='root', password='123') 3. 为了防止暴力破解, ...

  9. Android实战项目——家庭记账本(二)

    今天主要是对昨天做的添加账单信息的功能做了完善,实现了数据库的相关操作,如图是对已添加的账单信息的总结显示. 目前实现了通过日期进行汇总的功能,如上图中的各项item就是通过对所有账单信息进行按日期汇 ...

  10. MySQL在Windows中设置环境变量

    在桌面选择“计算机”的图标(或者是我的电脑),右键-->属性-->点击“高级系统设置” 然后选择 高级  选项点击环境变量 然后点击新建-> 变量名为MYSQL_HOME 变量值为m ...