今日思维导图
每日代码
udp聊天器
import socket
"""
这段代码可以实现循环进行收发消息,但是同一时间只能进行一个动作
"""
def send_msg(udp_socket):
"""发送数据"""
# 发送数据
client_ip = input("请输入对方ip: ")
client_port = int(input("请输入对方端口:"))
send_data = input("请输入要发送的内容:")
# 发送数据,使用encode进行编码,ip和端口要放在元组中
udp_socket.sendto(send_data.encode("utf-8"), (client_ip, client_port))
def recv_msg(udp_socket):
"""接收数据"""
# 接收数据 ,需要指定要接收的字节,1024就是 1kb
recv_data = udp_socket.recvfrom(1024)
# recvfrom返回的数据时一个元组,第一个元素是地址,第二个元素是接收到的消息
# 使用decode 进行解码
print("%s: %s" % (str(recv_data[1]), recv_data[0].decode("utf-8")))
def main():
# 创建套接字
udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)
# 绑定本地信息,可以知道ip和端口
udp_socket.bind(("", 6666))
while true:
print("---udp聊天器---")
print("1. 发送数据")
print("2. 接收数据")
print("0. 退出")
op = input("请输入要进行的操作")
if op == "1":
# 调用发送数据的函数
send_msg(udp_socket)
elif op == "2":
# 调用接收数据的函数
recv_msg(udp_socket)
elif op == "0":
break
else:
print("输入有误,请重新输入")
udp_socket.close()
if __name__ == "__main__":
main()
tcp服务器代码
import socket
"""tcp服务器"""
def main():
# 创建套接字, tcp的参数时sock_stream
tcp_socket = socket.socket(socket.af_inet, socket.sock_stream)
# 绑定本地地址, 本地地址和端口可能需要重新指定
tcp_socket.bind(("", 6666))
# 由主动变成被动接听, listen方法可以指定同时连接的客户端
tcp_socket.listen(128)
while true:
# 循环接听客户
# 等待客户端连接, 当有客户连接,accept方法返回一个元组
# 元组第一个元素是一个新的套接字,只针对于当前连接的这个客户端;第二个元素是客户端地址
colient_socket, colient_addr = tcp_socket.accept()
# 接收数据
print(colient_addr)
while true:
# 循环和同一个客户端联系
colient_data = colient_socket.recv(1024)
print(colient_data.decode("utf-8"))
if colient_data:
# 进行判断,只有客户端还在发送数据,就返回一个数据给客户端
# 发挥一部分数据给客户端
colient_socket.send("嘿嘿嘿".encode("utf-8"))
else:
# 没有数据就
break
# 关闭套接字
colient_socket.close()
tcp_socket.close()
if __name__ == "__main__":
main()
tcp客户端代码
import socket
"""tcp客户端"""
def main():
# 创建套接字
tcp_socket = socket.socket(socket.af_inet, socket.sock_stream)
# 链接服务器, tcp客户端需要先链接服务器
tcp_socket.connect(("192.168.xxx.xxx", 6666))
while true:
# 循环和服务器联系
# 发送数据
print("输入【exit】退出链接")
send_data = input("请输入要发送的数据:")
if send_data == "exit":
break
tcp_socket.send(send_data.encode("utf-8"))
# 接收服务器返回的数据
server_data = tcp_socket.recv(1024)
print(server_data.decode("utf-8"))
# 关闭套接字
tcp_socket.close()
if __name__ == "__main__":
main()
在 tcp 这里碰见了一个奇怪的bug
服务器和客户端运行起来后,输入正常数据没有问题,当只输入一个回车时,程序不发送数据也不接受数据只能强行接受,问了下,没有解决,这玩意好像是因为操作系统底层的原因, 后面再研究研究。
今天内容需要记忆和理解都比较多,不过还算可以接受。
最近在试着使用 typora 练习 markdown 写作方式,不是很熟练,写出来有点乱,慢慢练习熟练了再使用这种方式吧。
STM32呼吸灯的PWM原理与代码实现
动极思静 NF AUDIO广州耳机展首发静铁混合耳机
Mini/Micro LED等高端产品营收增长超 47%,三安新“答卷”
苹果正考虑为Apple Watch增加Touch ID和屏下隐藏式摄像头
PCB高频板材有哪些?如何选择?
python修炼——UDP、TCP
采用单独励磁同步电机的电动汽车电机设计方案
联发科何时能够获得台积电5nm工艺的支撑?
普源精电收购解决方案提供商耐数电子
ascii字符对照表完整版
OPPOR11最新消息:OPPOR11发布会明日揭晓来点不一样,OPPR11Plus+性能升级有理有据抢先看
为什么比特币和加密货币价格下跌到了最低点
芯片设计晶圆代工的3D IC架构挑战
亚洲视野下的RISC-V
光纤在视频监控当中是如何应用的
电源设计说明中使用GaN器件进行LTspice仿真
智哪儿×广州光亚展专栏:对话8家AIoT及芯片方案企业,解读其核心竞争优势及成熟项目案例,参展亮点提前看
物联网和区块链技术如何相结合有什么利处
海洋水文气象数据采集上云助力建立风暴潮在线预警监测系统
功率计数据测试可能会出现的问题应该如何解决办法