1,UDP实现收发数据

  1. import socket
  2.  
  3. def send_msg(udp_socket):
  4. """获取键盘数据,并将其发送给对方"""
  5. # 1. 从键盘输入数据
  6. msg = input("\n请输入要发送的数据:")
  7. # 2. 输入对方的ip地址
  8. dest_ip = input("\n请输入对方的ip地址:")
  9. # 3. 输入对方的port
  10. dest_port = int(input("\n请输入对方的port:"))
  11. # 4. 发送数据
  12. udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port))
  13.  
  14. def recv_msg(udp_socket):
  15. """接收数据并显示"""
  16. # 1. 接收数据
  17. recv_msg = udp_socket.recvfrom(1024)
  18. # 2. 解码
  19. recv_ip = recv_msg[1]
  20. recv_msg = recv_msg[0].decode("GBK")
  21. # 3. 显示接收到的数据
  22. print(">>>%s:%s" % (str(recv_ip), recv_msg))
  23.  
  24. def main():
  25. # 1. 创建套接字
  26. udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  27. # 2. 绑定本地信息
  28. udp_socket.bind(("", 8081))
  29. while True:
  30. # 3. 选择功能
  31. print("="*30)
  32. print("1:发送消息")
  33. print("2:接收消息")
  34. print("="*30)
  35. op_num = input("请输入要操作的功能序号:")
  36.  
  37. # 4. 根据选择调用相应的函数
  38. if op_num == "":
  39. send_msg(udp_socket)
  40. elif op_num == "":
  41. recv_msg(udp_socket)
  42. else:
  43. print("输入有误,请重新输入...")
  44.  
  45. if __name__ == "__main__":
  46. main()
  47.  
  48. """
  49. 备注:socket软件的安装位置:d:\hercules-3-2-8.exe
  50. """

2,TCP-客户端

  1. import socket
  2.  
  3. # 创建tcp套接字
  4. tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  5.  
  6. # 指定服务器IP地址和端口号
  7. server_ip = ('192.168.30.175', 8080)
  8.  
  9. # 连接服务器
  10. tcp_socket.connect(server_ip)
  11.  
  12. # 输入要发送的内容
  13. send_msg = input("你说:")
  14.  
  15. # 向服务器发送数据
  16. tcp_socket.send(send_msg.encode('utf8'))
  17.  
  18. # 接收服务器消息
  19. recv_data = tcp_socket.recv(1024)
  20. print("他说:%s" % recv_data.decode('GBK'))
  21.  
  22. # 关闭套接字
  23. tcp_socket.close()

3,TCP-服务器端

  1. import socket
  2.  
  3. # 创建tcp套接字
  4. tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  5.  
  6. # 指定服务器IP地址和端口号
  7. server_ip = ('192.168.30.175', 8080)
  8.  
  9. # 连接服务器
  10. tcp_socket.connect(server_ip)
  11.  
  12. # 输入要发送的内容
  13. send_msg = input("你说:")
  14.  
  15. # 向服务器发送数据
  16. tcp_socket.send(send_msg.encode('utf8'))
  17.  
  18. # 接收服务器消息
  19. recv_data = tcp_socket.recv(1024)
  20. print("他说:%s" % recv_data.decode('GBK'))
  21.  
  22. # 关闭套接字
  23. tcp_socket.close()

4,多线程-UDP

  1. import socket
  2. import threading
  3.  
  4. def send_msg(udp_socket):
  5. """获取键盘数据,并将其发送给对方"""
  6. while True:
  7. # 1. 从键盘输入数据
  8. msg = input("\n请输入要发送的数据:")
  9. # 2. 输入对方的ip地址
  10. dest_ip = input("\n请输入对方的ip地址:")
  11. # 3. 输入对方的port
  12. dest_port = int(input("\n请输入对方的port:"))
  13. # 4. 发送数据
  14. udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port))
  15.  
  16. def recv_msg(udp_socket):
  17. """接收数据并显示"""
  18. while True:
  19. # 1. 接收数据
  20. recv_msg = udp_socket.recvfrom(1024)
  21. # 2. 解码
  22. recv_ip = recv_msg[1]
  23. recv_msg = recv_msg[0].decode("gbk")
  24. # 3. 显示接收到的数据
  25. print(">>>%s:%s" % (str(recv_ip), recv_msg))
  26.  
  27. def main():
  28. # 1. 创建套接字
  29. udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  30. # 2. 绑定本地信息
  31. udp_socket.bind(("", 7890))
  32.  
  33. # 3. 创建一个子线程用来接收数据
  34. t1 = threading.Thread(target=recv_msg, args=(udp_socket,))
  35. t1.start()
  36. # 4. 让主线程用来检测键盘数据并且发送
  37. send_msg(udp_socket)
  38.  
  39. if __name__ == "__main__":
  40. main()
  41.  
  42. """
  43. 多任务
  44. 实现同时收发,类似QQ即时通讯
  45. """

Pyhton高级-Socket的更多相关文章

  1. 【Socket】linux网络多路复用IO技术

      1.mystery引入      1)Select是一种多路复用IO输入输出模式,在linux的输入输出编程中通过select的轮询机制,发现可用/可读或可写的接口.    2)低级socket程 ...

  2. 消息中间件——kafka

    1.1.1 什么是消息中间件 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信.对 ...

  3. Python之路,Day8 - Python基础 面向对象高级进阶与socket基础

    类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的 ...

  4. 进击的Python【第十章】:Python的socket高级应用(多进程,协程与异步)

    Python的socket高级应用(多进程,协程与异步)

  5. python开发学习-day08(socket高级、socketserver、进程、线程)

    s12-20160305-day08 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  6. CSIC_716_20191203【 socket网络编程,以及沾包问题的高级解决方式】

    AF_UNIX(本机通信) AF_INET(TCP/IP – IPv4) AF_INET6(TCP/IP – IPv6) SOCK_STREAM(TCP流) SOCK_DGRAM(UDP数据报) 远程 ...

  7. 第九章:Python高级编程-Python socket编程

    第九章:Python高级编程-Python socket编程 Python3高级核心技术97讲 笔记 9.1 弄懂HTTP.Socket.TCP这几个概念 Socket为我们封装好了协议 9.2 cl ...

  8. Linux高级编程--10.Socket编程

    Linux下的Socket编程大体上包括Tcp Socket.Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较 ...

  9. Python高级之Socket 探索(五)

    目录: 面向对象 反射 socket 一.面向对象 方法 方法包括:普通方法.静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同. 普通方法:由对象调用:至少一个self参数:执行普通 ...

随机推荐

  1. STM32F407VG (五)定时器

    一.定时器节本分类和主要特点 1.STM32定时器分类: 1)看门狗定时器 2)SysTick定时器 3)RTC定时器 4)通用定时器 a)通用定时器TIM2~TIM5, 当中TIM2和TIM5是32 ...

  2. mysql-5.5 for linux源码安装

    mysql-5.5 for linux源码安装 1.使用Yum安装依赖软件包 # yum install -y gcc gcc-c++ gcc-g77 autoconf automake bison  ...

  3. 使用 Swift 3.0 操控日期

    作者:Joe,原文链接,原文日期:2016-09-20译者:Cwift:校对:walkingway:定稿:CMB 当你在想要 大规模重命名 时,一个附带的挑战就是要确保所有相关的文档都必须同步更新.比 ...

  4. warning: here-document at line 7 delimited by end-of-file (wanted `rui')

  5. 新建项目git clone

  6. A simple problem(并查集判环)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2497 题意:给定一些点和边的关系,判断S点是否 ...

  7. nodejs windows环境安装

    相信对于很多关注javascript发展的同学来说,nodejs已经不是一个陌生的词眼.有关nodejs的相关资料网上已经铺天盖地.由于它的高并发特性,造就了其特殊的应用地位. 国内目前关注最高,维护 ...

  8. C - Haiku

    Problem description Haiku is a genre of Japanese traditional poetry. A haiku poem consists of 17 syl ...

  9. C#:设置webBrowser框架与系统相对应的IE内核版本

    通常情况下,我们直接调用C#的webBrowser控件,默认的浏览器内核是IE7.  那么如何修改控件调用的默认浏览器版本呢? /// <summary> /// 修改注册表信息来兼容当前 ...

  10. Vue蚂蜂窝Vue-cli+webpack做的

    先来看下效果 项目地址  喜欢star一下哦