Python全栈——C/S基础

别说谁变了你拦得住时间么 提交于 2020-01-24 15:00:09
  1. TCP
    tpye = SOCK_STREAM
    server.py
import socket

# 不传参数,默认使用基于网络类型的套接字,协议:TCP
server = socket.socket()
# 告诉别人server的地址和端口
# 端口的范围是0-65535,但是0-1023这些是默认端口不能使用
server.bind(('192.168.1.107', 18080))
# 能同时接受的连接
server.listen()
# 接受客户端的连接,阻塞等待
conn, addr = server.accept()

while 1:
    msg_r = conn.recv(1024).decode('utf-8')
    if msg_r == 'q':
        break
    print(msg_r)
    msg_s = input('>>>')
    conn.send(msg_s.encode('utf-8'))
    if msg_s == 'q':
        break

conn.close()
server.close()

client.py

import socket

client = socket.socket()
client.connect(('192.168.1.107', 18080))

while 1:
    msg_s = input('>>>')
    client.send(msg_s.encode('utf-8'))
    if msg_s == 'q':
        break
    msg_r = client.recv(1024).decode('utf-8')
    if msg_r == 'q':
        break
    print(msg_r)

client.close()
  1. UDP
    tpye = SOCK_DGRAM
    优势:一个服务器可以和多个客户端进行通信
    server.py
import socket

# 不传参数,默认使用基于网络类型的套接字,协议:UDP
server = socket.socket(type=socket.SOCK_DGRAM)
# 告诉别人server的地址和端口
# 端口的范围是0-65535,但是0-1023这些是默认端口不能使用
server.bind(('192.168.1.107', 18080))

while 1:
    msg_r, addr = server.recvfrom(1024)
    if msg_r.decode('utf-8') == 'q':
        break
    print(msg_r.decode('utf-8'), addr)
    msg_s = input('>>>')
    server.sendto(msg_s.encode('utf-8'), addr)
    if msg_s == 'q':
        break

server.close()

client.py

import socket

client = socket.socket(type=socket.SOCK_DGRAM)

while 1:
    msg_s = input('>>>')
    client.sendto(msg_s.encode('utf-8'), ('192.168.1.107', 18080))
    if msg_s == 'q':
        break
    msg_r, addr = client.recvfrom(1024)
    if msg_r.decode('utf-8') == 'q':
        break
    print(msg_r.decode('utf-8'))

client.close()
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!