python中的socket

创建TCP/IP套接字
tcpSock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
创建UDP/IP套接字
udpSocket = socket.socket(socket.AF_INFT,socket.SOCK_DGRAM

常用套接字对象方法

服务器套接字方法

  1. bind(),将地址绑定到套接字上
  2. listen(),设置并启动TCP监听器
  3. accept(),被动接受TCP客户端连接,一直等待直到连接到达

客户端套接字方法

  1. connect(),主动发起TCP服务器连接
  2. connect_ex(),connect的扩展版本,会以错误码的形式返回问题

普通套接字方法

  1. recv(),接受TCP消息
  2. recv_into(),接受TCP消息到指定的缓冲区
  3. send(),发送TCP消息
  4. sendall(),完整地发送TCP消息
  5. recvfrom(),接受UDP消息
  6. sendto(),发送UDP消息

创建TCP/IP服务 客户端

from socket import*
from time import ctime
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)

tcpSerSock = socket(AF_INET,SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)

while True:
    print("waiting for connection...")
    tcpCliSock,addr = tcpSerSock.accept()
    print("...connected from :",addr)

    while True:
        data = tcpCliSock.recv(BUFSIZ).decode()
        if not data:
            break
        tcpCliSock.send(('[%s] %s ' % (ctime(),data)).encode())

tcpSerSock.close()
from socket import*
HOST = '127.0.0.1'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)

tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)

while True:
    data = input("> ")
    if not data:
        break
    tcpCliSock.send(data.encode())
    data = tcpCliSock.recv(BUFSIZ).decode()
    if not data:
        break
    print(data)

tcpCliSock.close()

创建UDP/IP服务 客户端

from socket import*
from time import ctime

HOST = ''
PORT = 21568
BUFSIZ = 1024
ADDR = (HOST,PORT)

udpSerSock = socket(AF_INET,SOCK_DGRAM)
udpSerSock.bind(ADDR)

while True:
    print("waiting for message...")
    data,addr = udpSerSock.recvfrom(BUFSIZ)
    data = data.decode()
    udpSerSock.sendto(('[%s] %s ' %(ctime(),data)).encode(),addr)
    print("...received from and returned to :",addr)

udpSerSock.close()
from socket import*

HOST = "localhost"
PORT = 21568
BUFSIZ = 1024
ADDR = (HOST,PORT)

udpCliSock = socket(AF_INET,SOCK_DGRAM)
while True:
    data = input("> ")
    data = data.encode()
    if not data:
        break
    udpCliSock.sendto(data,ADDR)
    data,ADDR = udpCliSock.recvfrom(BUFSIZ)
    data = data.decode()
    if not data:
        break
    print(data)

udpSerSock.close()

原文地址:https://www.cnblogs.com/Alex3O/p/13261972.html