导读: 今天内容需要记忆和理解都比较多,不过还算可以接受。 最近在试着使用 Typora 练习 Markdown 写作方式,不是很熟练,写出来有点乱,慢慢练习熟练了再使用这种方式吧。 今日思维导图 每日代码 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 写作方式,不是很熟练,写出来有点乱,慢慢练习熟练了再使用这种方式吧。 |
香港服务器多少钱一个月?哪家的香港服务器
4核4g6M50G盘20G防御云服务器价格多少钱?T
特发集团与华为签署全面合作协议
【身边的AI】高空抛物智能追溯解决方案,站
中海&华为签署战略深化合作协议
华为赵博:数字化转型成为地产企业最确定的