代码讲解:

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. Java 添加、读取、删除Excel文档属性

    在文档属性中,可以设置诸多关于文档的信息,如创建时间.作者.单位.类别.关键词.备注等摘要信息以及一些自定义的文档属性.下面将通过Java程序来演示如何设置,同时对文档内的已有信息,也可以实现读取和删 ...

  2. 单线程的REDIS为什么这么快?

    REDIS是单线程处理所有请求,和一般经典实际上推荐的方式相反,那么单线程串行处理,为什么依然能够做到很快呢?知乎上的一个答案如下,其中线程切换和锁不是性能主要影响因素的观点和一般的答案都不同: 作者 ...

  3. win10电脑搭建网站

    新建网站之后,IIS错误提示是:在计算机“.”上没有找到服务W3SVC,需要在“启动或关闭windows功能”添加.net 3.5下面的两个程序. https://img-blog.csdn.net/ ...

  4. kubernetes集合

    kubernetes集合 kubernetes(1):kubernetes简介和组件 kubernetes(2):yum安装kubernetes kubernetes(3):kubeadm安装k8s1 ...

  5. Nexus 安装运维手册

    1. Nexus 安装与配置 1.1 下载Nexus 登录https://www.sonatype.com/download-oss-sonatype,下载最新的Nexus版本. 我这里使用的是nex ...

  6. 函数式编程/lambda表达式入门

    函数式编程/lambda表达式入门 本篇主要讲解 lambda表达式的入门,涉及为什么使用函数式编程,以及jdk8提供的函数式接口 和 接口的默认方法 等等 1.什么是命令式编程 命令式编程就是我们去 ...

  7. Linux系统WEB服务之Nginx基础入门

    一.Nginxi简介 Nginx是什么?它是一个开源.高性能的WEB服务器软件和代理服务器软件,由俄罗斯人Igor Sysoev 开发实现.它的功能主要分三类,第一是它作为一个WEB服务软件使用:第二 ...

  8. jq模糊匹配(qq:2798641729)

    图灵学院--Java高级架构师-互联网企业级实战VIP课程(价值6380)(qq:1324981084) jq是一般程序员在前台开发的时候都会使用的技术,其中模糊匹配查询在动态添加标签的时候经常用到, ...

  9. ACM 英文学习系列

    因为ACM题目描述全是英文,所以有必要学习学习相关词汇...内心极为无奈 废话不多说 rooted binary tree 有根二叉树     integers n 英[ˈɪntɪdʒəz] 整数   ...

  10. redis主从同步,总是显示master_link_status:down的解决方法

    小编使用的redis的版本号是5.0.5,可能会略有不同,例如redis.conf配置文件中,没有slaveof这一项配置 使用命令配置主从复制 今天在使用命令slaveof或者是replicaof命 ...