socket:套接字

基于TCP协议的socket

tcp是基于链接的,必须先启动服务端,让后在启动客户端去链接服务端

server端

import socket
st = socket.socket()  
st.bind(('127.0.0.1',9885))  #把地址绑定到套接字
st.listen()  #监听链接

conn,attr = st.accept()  #接受客户端链接
msg = conn.recv(1024)  #接受客户端信息
print(msg.decode('utf-8')) #打印客户端信息
conn.send('你好'.encode('utf-8'))  #向客户端发送信息
conn.close() #关闭客户端套接字
st.close()  #关闭服务器套接字(可选)

clinet端

import socket
sk = socket.socket()  #创建客户端套接字
sk.connect(('127.0.0.1',9885)) #尝试链接服务器

sk.send(''.encode('utf-8'))  #向服务器发送信息
ret = sk.recv(1024)   #接受服务端信息
print(ret.decode('utf-8'))
sk.close()  #关闭客户端套接字

基于UDP协议的socket

udp是无连接的,启动服务之后可以直接接受信息,不需要提前建立链接

sercer:端

import socket
sk = socket.socket(type = socket.SOCK_DGRAM)
addr = ('127.0.0.1',9000)
sk.bind(addr)

while True:
    msg,cli_addr = sk.recvfrom(1024)
    print(msg.decode('utf-8'))
    # message = input('>>>')
    sk.sendto('收到'.encode('utf-8'),cli_addr)


#让C/S之间通信持续进行

client端

import socket
sk = socket.socket(type = socket.SOCK_DGRAM)

# b'hello' == 'hello'.encode('utd-8')
sk.sendto(b'hello',('127.0.0.1',9000))
msg,ser_addr = sk.recvfrom(1024)
print(msg)
print(ser_addr)

sk.close()
原文地址:https://www.cnblogs.com/wanglan/p/10058727.html