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 ...
随机推荐
- [Effective Java 读书笔记] 第二章 创建和销毁对象 第六-七条
第六条 消除过期引用 JAVA中依然会有 memory leak的,比如一个栈先增长再收缩,那么从栈中弹出的对象是不会被当做垃圾回收的,即时使用栈的程序不再引用这些对象.这是因为栈的内部维护着对这些对 ...
- hive使用beeline无法登录时的解决办法
如果参考官方文档执行下列命令,报错: $ $HIVE_HOME/bin/hiveserver2 $ $HIVE_HOME/bin/beeline -u jdbc:hive2://$HS2_HOST:$ ...
- Android O 8.0 奥利奥
Android O 8.0 奥利奥 1.画中画, 2.智能文本选择(Smart Text Selection), 3.notification dots, 4.自动填写(Auto-Fill) 4. ...
- webpack 中那些最易混淆的 5 个知识点
学习博客:https://blog.csdn.net/wsyzxxn9/article/details/90677770 学习lodash:https://www.html.cn/doc/lodash ...
- 【Python3爬虫】一次应对JS反调试的记录
一.前言简介 在前面已经写过关于 JS 反调试的博客了,地址为:https://www.cnblogs.com/TM0831/p/12154815.html.但这次碰到的网站就不一样了,这个网站并不是 ...
- centos下mysql中table大小写改为不敏感
项目由win系统部署到linux系统下,启动项目报错如下: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: ...
- C语言编写程序的大小端问题
有时候,用C语言写程序需要知道大端模式还是小端模式,,由于寄存器大于一个字节(8bit),就会存在一个字节安排的问题,例如(16bit)的short型,(32bit)的int型,具体需要看具体的编译器 ...
- Vue之计算属性Computed和属性监听Watch,Computed和Watch的区别
一. 计算属性(computed) 1.计算属性是为了模板中的表达式简洁,易维护,符合用于简单运算的设计初衷. 例如: <div id="app"> {{ myname ...
- oracle数据泵导入导出部分用户
问题描述:需要将140服务器中的tbomnew实例下的部分用户导入到118服务器下的tbompx实例中,本次导入导出的两个数据库均为19C 部分用户名:CORE,MSTDATA,BOMMGMT,CFG ...
- Redis的启动和关闭(前台启动和后台启动)
场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 在上 ...