Python——Socket编程

一、TCP

1、客户端

import socket
sk = socket.socket()  # 买个手机
sk.connect(('127.0.0.1',8080))  # 拨号
ret = sk.recv(1024)
print(ret)
sk.send(b'byebye!')
sk.close()

2、服务端

import socket
sk = socket.socket()  # 创建了一个socket对象
sk.bind(('192.168.21.36',8080))  # 绑定一台机器的(ip,端口)
# 回环地址 - 指向自己这台机器
sk.listen()    # 建立监听等待别人连接
conn,addr = sk.accept()       # 阻塞:在这里等待直到接到一个连接
# conn是连接
# addr是对方的地址
print(conn)
print(addr)
conn.send(b'hello')              # 和对方打招呼
msg = conn.recv(1024)                 # 对方和我说的话
# 有发必有收 收发必相等
print(msg)
conn.close()                      # 挂电话
sk.close()                        # 关机

二、UDP 

UDP的server不需要进行监听也不需要建立连接,在启动服务值周,只能被动的等待客户端发送消息过来

客户端发送消息的同时还会自带地址信息,消息回复的时候,不仅需要发送消息,还需要把自己的地址发送过去

1、客户端

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.sendto(b'hello',('127.0.0.1',8080))   # 直接给服务器发送一段消息
msg,addr = sk.recvfrom(1024)   # 接收对面的回信
print(msg)
sk.close()

2、服务端

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)  # 建立一个socket对象,
# 指定以UDP协议的形式来连接
sk.bind(('127.0.0.1',8080))
# 指定服务的地址
msg,addr = sk.recvfrom(1024) # 接收消息,发送端的地址
print(msg,addr)
sk.sendto(b'HELLO',addr)   # 给发送端回复消息
sk.close()  # 关闭socket连接

 

posted @ 2018-12-25 08:35  澄心元素  阅读(170)  评论(0编辑  收藏  举报