博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pythoh网络编程3:创建TCP服务器和客户端
阅读量:6285 次
发布时间:2019-06-22

本文共 1866 字,大约阅读时间需要 6 分钟。

建立TCP连接的过程在服务器端和客户端的一系列步骤:

在TCP服务器中,用来接收连接的套接字对象与用来执行客户端后续通信的套接字对象是不同的。具体来说,accept()调用返回实际用来连接的新套接字对象。这样以来,服务器就可以同时管理大量的客户端连接。

1.创建TCP服务器

# filename:tcpServer.pyfrom socket import *from time import ctimeHOST = ''                          # HOST为空与INADDR_ANY含义相同,表示任何地址PORT = 21567                       # 端口号21567BUFSIZE = 1024                     # 缓冲区的大小为1KADDR = (HOST, PORT)                # 地址元组# 创建服务器端套接字tcpSerSock = socket(AF_INET, SOCK_STREAM)# 将套接字与地址绑定tcpSerSock.bind(ADDR)# 监听连接tcpSerSock.listen(5)# 服务器进入无限循环while True:    print('waiting for connection...')    # 接受客户的连接,返回客户端套接字和地址的元组    # 返回的新的客户端套接字可以用于后续的通信    tcpCliSock, addr = tcpSerSock.accept()    print('...connected from:', addr)    # 通信循环    while True:        # 接收来自客户端的数据        re_data = tcpCliSock.recv(BUFSIZE)        if not re_data:            break        # 发送数据给客户端,内容:[时间]接受的信息        # bytes.decode()对接收的内容进行解码        se_data = ['[', str(ctime()), ']', str(re_data.decode())]        # str.encode()对发送内容进行编码        tcpCliSock.send((''.join(se_data)).encode())    # 关闭客户端套接字    tcpCliSock.close()# 关闭服务器端套接字tcpSerSock.close()

2.创建TCP客户端

# filename:tcpClient.pyfrom socket import *HOST = 'localhost'                  # HOST为localhost表示本机,可以换成其他表示服务器端的地址或者域名PORT = 21567                        # 端口号21567BUFSIZE = 1024                      # 缓冲区的大小为1KADDR = (HOST, PORT)                 # 地址元组# 创建客户端套接字tcpCliSock = socket(AF_INET, SOCK_STREAM)# 连接服务器端tcpCliSock.connect(ADDR)# 通信循环while True:    # 提示用户输入    se_data = input('> ')    if not se_data:        break    # 向服务器端发送数据    # str.encode()对发送内容进行编码    tcpCliSock.send(se_data.encode())    # 接收来自服务器端的数据    re_data = tcpCliSock.recv(BUFSIZE)    if not re_data:        break    # bytes.decode()对接收的内容进行解码    print(re_data.decode())# 关闭客户端套接字tcpCliSock.close()

3.运行

转载于:https://www.cnblogs.com/fortwo/archive/2013/04/24/3041195.html

你可能感兴趣的文章
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
计算机网络与Internet应用
查看>>
Django 文件下载功能
查看>>
走红日本 阿里云如何能够赢得海外荣耀
查看>>
磁盘空间满引起的mysql启动失败:ERROR! MySQL server PID file could not be found!
查看>>
点播转码相关常见问题及排查方式
查看>>
[arm驱动]linux设备地址映射到用户空间
查看>>
弗洛伊德算法
查看>>
【算法之美】求解两个有序数组的中位数 — leetcode 4. Median of Two Sorted Arrays
查看>>
精度 Precision
查看>>
Android——4.2 - 3G移植之路之 APN (五)
查看>>
Linux_DHCP服务搭建
查看>>
[SilverLight]DataGrid实现批量输入(like Excel)(补充)
查看>>
秋式广告杀手:广告拦截原理与杀手组织
查看>>
翻译 | 摆脱浏览器限制的JavaScript
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
网吧维护工具
查看>>