Python-简单socket的服务端和客户端


基于tcp协议

服务端:

import socket
sk = socket.socket()  # 实例化一个对象
sk.bind(('127.0.0.1',9000))  # 绑定一个地址 ip+端口号 括号里面必须时元组的形式
# 127.0.0.1 表示的本机地址,不过交换机的,只是为了排除一些网络问题,端口号一般写9000之后的数
sk.listen()  # 表示开始监听
conn,addr = sk.accpet()  # 接受一个链接请求
# conn 是一个对象,addr是请求对象的地址
# conn.send(b'hello')  # 给请求对象发送hello
conn.send('hello'.encode('utf-8'))  # 推荐使用
# conn.send('你好'.encode('utf-8'))  # 发送中文时只能用这个
msg = conn.recv(1024).decode('utf-8')  # 接受客户端发来的消息
print(msg)
conn.close()  # 与对方的信息传递结束
sk.close()  # 关闭

客户端:

import socket
sk = socket.socket()
sk.connect(('127.0.0.1',9000))
msg = sk.recv(1024).decode('utf-8')  # 最多接受1024字节
print(msg)
sk.send('你好'.encode('utf-8'))
sk.close()

 基于udp协议

服务端:

# import socket
# sk = socket.socket(type=socket.SOCK_DGRAM)
from socket import socket,SOCK_DGRAM
sk = socket(type=SOCK_DGRAM)
sk = bind(('127.0.0.1',9000))
while True:
    msg,cli_addr = sk.recvfrom(1024)
    # print(msg,cli_addr)  # cli_addr 为客户端的地址
    print(msg.encode('utf-8'))
    if msg.encode('utf-8').upper() == 'Q':
        continue
    content = input('>>>')
    sk.sendto(content.encode('utf-8'),cli_addr)

客户端:

from socket import socket,SOCK_DGRAM
sk = socket(type=SOCK_DGRAM)
server_addr = ('127.0.0.1',9000)  # 服务端地址
while True:
    content = input('>>>')
    if content.upper() == 'Q':
        break
    sk.sendto(content.encode('utf-8'),server_addr)
    msg = sk.recv(1024)
    print(msg.decode('utf-8'))

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM