博客
关于我
Socket
阅读量:797 次
发布时间:2023-04-03

本文共 1806 字,大约阅读时间需要 6 分钟。

socket(简称套接字)是进程间通信的一种方式,主要用于不同主机或同一台机器上的进程间通信。常见于QQ等即时通讯工具。

套接字创建

套接字的创建使用以下函数:

socket.socket(AddressFamily, Type)

其中:

  • AddressFamily:可选择AF_INET(用于Internet通信)或AF_UNIX(用于同一台机器通信),常用AF_INET。
  • Type:套接字类型,可选SOCK_STREAM(流式套接字,主要用于TCP协议)或SOCK_DGRAM(数据报套接字,主要用于UDP协议)。

UDP通信

UDP数据发送

from socket import *udpSocket = socket(AF_INET, SOCK_DGRAM)  # 创建UDP套接字sendAddr = ('192.168.1.1', 8080)  # 指定发送目标IP和端口sendData = "hello"  # 发送内容udpSocket.sendto(sendData, sendAddr)  # 发送数据udpSocket.close()  # 关闭套接字

UDP数据接收

from socket import *udpSocket = socket(AF_INET, SOCK_DGRAM)  # 创建UDP套接字bindAddr = ('', 7788)  # 绑定本机特定端口udpSocket.bind(bindAddr)  # 绑定本地端口recvData = udpSocket.recvfrom(1024)  # 接收数据,1024为接收缓冲大小print(recvData)  # 输出接收到的数据udpSocket.close()  # 关闭套接字

UDP广播

import socket, sysdest = ('
', 7788) # 目标IP和端口s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) # 设置为广播模式s.sendto("Hi", dest) # 发送广播数据s.close() # 关闭套接字

TCP通信

TCP(传输控制协议)提供可靠的数据传输,适用于稳定通信的场景,如HTTP协议。

TCP服务端

from socket import *tcpSerSocket = socket(AF_INET, SOCK_STREAM)  # 创建TCP套接字address = ('', 7788)  # 绑定本地IP和端口tcpSerSocket.bind(address)  # 绑定本地端口tcpSerSocket.listen(5)  # 设置监听队列大小newSocket, clientAddr = tcpSerSocket.accept()  # 等待客户端连接recvData = newSocket.recv(1024)  # 接收客户端数据newSocket.send("thank you !")  # 向客户端发送消息newSocket.close()  # 关闭与客户端的连接tcpSerSocket.close()  # 关闭监听套接字

TCP客户端

from socket import *tcpClientSocket = socket(AF_INET, SOCK_STREAM)  # 创建TCP套接字serAddr = ('192.168.1.102', 7788)  # 指定服务器IP和端口tcpClientSocket.connect(serAddr)  # 建立与服务器的连接tcpClientSocket.send("hello")  # 向服务器发送消息recvData = tcpClientSocket.recv(1024)  # 接收服务器回复tcpClientSocket.close()  # 关闭套接字

常见TCP攻击

  • DDoS/SYN洪水攻击:客户端发送大量SYN包,导致服务器资源耗尽。
  • DNS劫持:攻击者伪造DNS解析结果,引导流量到攻击服务器。
  • ARP中间人攻击:攻击者伪造ARP消息,窃取或污染网络数据流。
  • 转载地址:http://urefk.baihongyu.com/

    你可能感兴趣的文章
    ora-12541:tns:no listener
    查看>>
    【docker知识】联合文件系统(unionFS)原理
    查看>>
    ORACEL学习--理解over()函数
    查看>>
    oracle 10g crs命令,Oracle 10g CRS安装问题解决一例
    查看>>
    oracle 10g的安装配置
    查看>>
    Oracle 11.2.0.4 x64 RAC修改public/private/vip/scan地址
    查看>>
    Oracle 11G INDEX FULL SCAN 和 INDEX FAST FULL SCAN 对比分析
    查看>>
    Oracle 11g 使用RMAN备份数据库
    查看>>
    Oracle 11g 单实例安装文档
    查看>>
    Oracle 11gR2学习之二(创建数据库及OEM管理篇)
    查看>>
    Oracle 11g中的snapshot standby特性
    查看>>
    Oracle 11g忘记sys、system、scott密码该这样修改!
    查看>>
    Oracle 11g数据库安装和卸载教程
    查看>>
    Oracle 11g超详细安装步骤
    查看>>
    Oracle 12c中的MGMTDB
    查看>>
    Oracle BEQ方式连接配置
    查看>>
    ORACLE Bug 4431215 引发的血案—原因分析篇
    查看>>
    oracle dblink 创建使用 垮库转移数据
    查看>>
    oracle dblink结合同义词的用法 PLS-00352:无法访问另一数据库
    查看>>
    Oracle dbms_job.submit参数错误导致问题(ora-12011 无法执行1作业)
    查看>>