udp通信
# -*- coding:utf-8 -*-
import socket
def main():
# 创建套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#绑定端口
#发送,udp发送不用绑定地址,只需要指明发送的地址即可,
data = '哈哈'
localaddr = ('127.0.0.1',7788)
udp_socket.sendto(data.encode('utf8'),localaddr)
#关闭
udp_socket.close()
if __name__ == '__main__':
main()
# -*- coding:utf-8 -*-
import socket
def main():
#创建套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定
loaclladdr = ('',7788)
udp_socket.bind(loaclladdr)
#接收
data = udp_socket.recvfrom(1024)
print('%s:%s'%(str(data[1]),data[0].decode('utf8')))
#关闭
udp_socket.close()
if __name__ == "__main__":
main()
tcp
# -*- coding:utf-8 -*-
import socket
def get_file(recv_data):
filename = recv_data
content = None
try:
with open(filename,'rb') as f:
content = f.read()
except Exception as ret:
print(ret)
if content==0:
print('没有文件')
return content
def main():
# 创建套接字
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定端口
addr = ('', 7788)
tcp_server.bind(addr)
# listen监听
tcp_server.listen(128)
# accept 链接
while 1:
#等待客服端链接
print('等待客服端链接')
client_socket, client_addr = tcp_server.accept()
print(client_addr)
while 1:
# 收发数据
filename = client_socket.recv(1024).decode('utf8')
print('客服端要下载的文件:%s'%filename)
content = get_file(filename)
if content:
client_socket.send(content)
# 客服端关掉连接
if filename:
break
# 关闭
client_socket.close()
#关闭服务器
tcp_server.close()
if __name__ == "__main__":
main()
# -*- coding:utf-8 -*-
import socket
def main():
# 绑定套接字
tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 链接服务器
addr = ('127.0.0.1',7788)
tcp_socket.connect(addr)
# 发送数据
filename = input('请输入你要下载的文件:').encode('utf8')
tcp_socket.send(filename)
recv_data = tcp_socket.recv(1024)
if recv_data:
with open('2.txt','wb') as f:
f.write(recv_data)
print('下载文件成功')
else:
print('下载文件失败')
#关闭
tcp_socket.close()
if __name__ == '__main__':
main()