pythonのSocket

TCP/IP
    三次握手   第一次 A向B 发送 syn 请求    然后B给A返回 syn + ack  A收到后,给B返回ack 握手成功。

Socket 网络编程
    实现通信 要通过IP+Port

    Socket是对所有上层协议的封装,它只关注 发送数据 和 接收数据

Socket使用方法:
    --发送端 伪代码

    import socket

    # 声明协议
    socket.TCP/IP

    # 建立连接
    connect(a.ip,a.port)

    # 发送请求
    socket.sent(hello)

    socket.recv()

    socket.close()
    ---------------------

    --接收端 伪代码

    import socket

    # 声明协议
    socket.TCP/IP

    # 监听端口 (监听IP,监听端口)
    listen(0.0.0.0,9990)

    # 等待链接
    waiting()

    # 接收数据
    recv()

    send()


Socket Families (地址簇)
    socket.AF_UNIX 本机进程间通信
    socket.AF_INET IPV4
    socket.AF_INET6 IPV6

Socket Types
    socket.SOCK_STREAM # for tcp
    socket.SOCK_DGRAM # for udp
    socket.SOCK_raw # 原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而它可以。其次SOCK_RAW也可以处理特殊的
    socket.SOCK_RDM # 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。

客户端代码:

#!/usr/bin/env python

import  socket

# 申明协议类型
client = socket.socket() #申明socket类型,同事生成socket连接对象

# 设置请求端口
client.connect(("localhost",6969))

while True:
    msg = input(">>:").strip()
    #发送数据
    #client.send(b"Hello World")
    client.send(msg.encode("utf-8"))
    data = client.recv(1024)

    print("recv:",data.decode())

client.close()

服务端代码:

#!/usr/bin/env python

import  socket

# 声明协议
server = socket.socket()

server.bind(("localhost",6969)) # 绑定要监听的端口

server.listen() # 监听

print("等待通信中。。。")
# 等待通信
# conn就是客户端连过来,而在服务器端为其生成的一个连接实例
conn,addr = server.accept() # 它会返回两个值 一个是连接对象,另一个是链接地址
print("conn,addr",conn,addr)
print("消息来啦...")
while True:
    # 接受信息
    data = conn.recv(1024)

    print("recv:",data.decode())

    conn.send(data)

server.close()
原文地址:https://www.cnblogs.com/pengpengzhang/p/9528202.html