TCP socket编程

一、服务端代码

#encoding = utf -8

#导入socket库

from socket import *

#等待客户端来连接,主机地址为0.0.0.0表示绑定本机所有网络接口ip地址

IP = '0.0.0.0'

#端口号

PORT = 50000

#定义一次从socket缓存区最多读入512个字节数据

BUFLEN = 512

#实例化一个socket编程

#参数AF_INET 表示该socket网络层使用IP协议

#参数SOCK_STREAM表示该socket传输层使用tcp协议

listenSocket = socket(AF_INET, SOCK_STREAM)

#socket 绑定地址和端口

listenSocket.bind((IP, PORT))

#使socket处于监听状态,等待客户端连接请求

#参数5表示 最多接受多少个等待连接的客户端

listenSocket.listen(5)

print(f"服务端启动成功,在{PORT} 端口等待客户端连接 ......")

dataSocket, addr = listenSocket.accept()

print("接受一个客户端连接: ", addr)

while True:

#尝试读取对方发送的消息

BUFLEN 指定从接受缓冲里最多读取多少字节

recved = dataSocket.rec(BUFLEN)

#如果返回空Bytes,表示对方关闭了连接

#退出循环,结束消息收发

if not recved:

break

#读取的字节数据是Bytes类型,需要解码为字符串

info = recved.decode()

print(f"收到对方消息: {info}")

#发送的数据类型必须的bytes,所以需要编码

dataSocket.send(f"服务端接收了信息 {info}".encode())

#服务端调用close()关闭socket

dataSocket.close()

listenSocket.close()

二、客户端代码

#encoding = utf -8

#导入socket库

from socket import *

IP = '127.0.0.1'

SERVER_PORT = 50000

BUFLEN = 512

#实例化一个socket编程,指明协议

dataSocket = socket(AF_INET, SOCK_STREAM)

#连接服务端socket

dataSocket.connect((IP, SERVER_PORT))

while True:

#从终端读入用户输入的字符串

toSend = input(" >> ")

if toSend == "":

break

#发送消息,编码为bytes

dataSocket.send(toSend.encode())

#等待接收服务端的消息

recved = dataSocket.recv(BUFLEN)

#如果返回空Bytes,表示对方关闭了连接

if not recved:

break

#打印读取的消息

print(recved.decode())

dataSocket.close()

相关推荐
脑子慢且灵1 分钟前
[JavaWeb]模拟一个简易的Tomcat服务(Servlet注解)
java·后端·servlet·tomcat·intellij-idea·web
华仔啊1 小时前
SpringBoot 中 6 种数据脱敏方案,第 5 种太强了,支持深度递归!
java·后端
异常驯兽师2 小时前
Spring 中处理 HTTP 请求参数注解全解析
java·spring·http
连合机器人2 小时前
晨曦中的守望者:当科技为景区赋予温度
java·前端·科技
AD钙奶-lalala3 小时前
idea新建的项目new 没有java class选项
java·ide·intellij-idea
sheji34163 小时前
【开题答辩全过程】以 12306候补购票服务系统为例,包含答辩的问题和答案
java·eclipse
千鼎数字孪生-可视化3 小时前
WebSocket实时推送技术:PLC状态监控大屏的高效实现路径
网络·websocket·网络协议
蒋星熠3 小时前
破壁者指南:内网穿透技术的深度解构与实战方法
网络·数据库·redis·python·websocket·网络协议·udp
hzzzzzo04 小时前
微服务网关全解析:从入门到实践
java·开发语言·微服务
纪莫4 小时前
技术面:Spring (bean的生命周期、创建方式、注入方式、作用域)
java·spring·java面试⑧股