1,UDP实现收发数据

 import socket

 def send_msg(udp_socket):
"""获取键盘数据,并将其发送给对方"""
# 1. 从键盘输入数据
msg = input("\n请输入要发送的数据:")
# 2. 输入对方的ip地址
dest_ip = input("\n请输入对方的ip地址:")
# 3. 输入对方的port
dest_port = int(input("\n请输入对方的port:"))
# 4. 发送数据
udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port)) def recv_msg(udp_socket):
"""接收数据并显示"""
# 1. 接收数据
recv_msg = udp_socket.recvfrom(1024)
# 2. 解码
recv_ip = recv_msg[1]
recv_msg = recv_msg[0].decode("GBK")
# 3. 显示接收到的数据
print(">>>%s:%s" % (str(recv_ip), recv_msg)) def main():
# 1. 创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 2. 绑定本地信息
udp_socket.bind(("", 8081))
while True:
# 3. 选择功能
print("="*30)
print("1:发送消息")
print("2:接收消息")
print("="*30)
op_num = input("请输入要操作的功能序号:") # 4. 根据选择调用相应的函数
if op_num == "":
send_msg(udp_socket)
elif op_num == "":
recv_msg(udp_socket)
else:
print("输入有误,请重新输入...") if __name__ == "__main__":
main() """
备注:socket软件的安装位置:d:\hercules-3-2-8.exe
"""

2,TCP-客户端

import socket

# 创建tcp套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 指定服务器IP地址和端口号
server_ip = ('192.168.30.175', 8080) # 连接服务器
tcp_socket.connect(server_ip) # 输入要发送的内容
send_msg = input("你说:") # 向服务器发送数据
tcp_socket.send(send_msg.encode('utf8')) # 接收服务器消息
recv_data = tcp_socket.recv(1024)
print("他说:%s" % recv_data.decode('GBK')) # 关闭套接字
tcp_socket.close()

3,TCP-服务器端

import socket

# 创建tcp套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 指定服务器IP地址和端口号
server_ip = ('192.168.30.175', 8080) # 连接服务器
tcp_socket.connect(server_ip) # 输入要发送的内容
send_msg = input("你说:") # 向服务器发送数据
tcp_socket.send(send_msg.encode('utf8')) # 接收服务器消息
recv_data = tcp_socket.recv(1024)
print("他说:%s" % recv_data.decode('GBK')) # 关闭套接字
tcp_socket.close()

4,多线程-UDP

import socket
import threading def send_msg(udp_socket):
"""获取键盘数据,并将其发送给对方"""
while True:
# 1. 从键盘输入数据
msg = input("\n请输入要发送的数据:")
# 2. 输入对方的ip地址
dest_ip = input("\n请输入对方的ip地址:")
# 3. 输入对方的port
dest_port = int(input("\n请输入对方的port:"))
# 4. 发送数据
udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port)) def recv_msg(udp_socket):
"""接收数据并显示"""
while True:
# 1. 接收数据
recv_msg = udp_socket.recvfrom(1024)
# 2. 解码
recv_ip = recv_msg[1]
recv_msg = recv_msg[0].decode("gbk")
# 3. 显示接收到的数据
print(">>>%s:%s" % (str(recv_ip), recv_msg)) def main():
# 1. 创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 2. 绑定本地信息
udp_socket.bind(("", 7890)) # 3. 创建一个子线程用来接收数据
t1 = threading.Thread(target=recv_msg, args=(udp_socket,))
t1.start()
# 4. 让主线程用来检测键盘数据并且发送
send_msg(udp_socket) if __name__ == "__main__":
main() """
多任务
实现同时收发,类似QQ即时通讯
"""

最新文章

  1. 应用Web.Config配置网站
  2. python学习之网页数据获取
  3. HDU 4578 Transformation --线段树,好题
  4. composite
  5. 使用Sharepoint定时运行Excel中宏程序
  6. 在asp.net前台页面中引入命名空间 和连接数据库
  7. 解决jquery mobile的遇到高版本Chrome一直转圈,页面加载不出来的情况。
  8. Facade 模式
  9. Vector3.Dot 与Vector3.Cross
  10. form验证及图片上传
  11. ABP文档 - 对象与对象之间的映射
  12. ubuntu 常用命令集
  13. 学习笔记-express路径问题
  14. Java集合类常见面试知识点总结
  15. centos7.2 mysql5.5编译安装
  16. c#基础学习(0806)之可变参数、ref和out关键字的简单使用
  17. 让Mac风扇面对PD不再疯狂
  18. java FileUtil(文件操作类)
  19. ubuntu的命令行状态和图形化界面切换 (转)
  20. java学习笔记—国际化(41)

热门文章

  1. 使用markdown和gitblog搭建自己的博客
  2. vbs socket
  3. Sqlite3插入大量数据性能优化
  4. [ JavaScript ] JavaScript 实现继承.
  5. HDU 5533/ 2015长春区域 G.Dancing Stars on Me 暴力
  6. HDU 3397 Sequence operation 多标记线段树
  7. 【POJ 3740】 Easy Finding
  8. android 自定义view 前的基础知识
  9. Spring的AOP机制---- AOP的注解配置---- AOP的注解配置
  10. Prism.Interactivity 之 PopupWindowAction 用法简记