马房山实验报告大学计算机网络实验(一)——获取本机Mac地址

武汉理工大学计算机网络实验(一)——获取本机Mac地址

说明

本实验代码仅适用于可运行shell脚本的操作系统,不过思路可以借鉴。

实验要求

通过编程获取本机Mac地址,语言不限(老师说的)。

本机系统

我使用的为macOS BigSur 11.2.1。

在CSDN搜“Mac获取Mac地址”感觉挺奇怪的…

实验思路分析

虽然C很强的大佬可以通过写驱动获取本机Mac地址,但是作为一个程序员当然是能偷懒就偷懒了(乐.jpg)

终端敲多了的都熟悉ifconfig命令可以直接输出Mac地址

所以我TM直接把ifconfig命令的输出拿来用正则表达式提取!

这nm不比从硬件层获取简单多了?
乐

观察格式

首先要确定我要提取的是哪个设备的Mac地址。
在这里插入图片描述
就WIFI吧,设备号是en0;

那么我们的shell命令就是 ifconfig en0 了。

源代码

Python 3.8.5

# ifconfig.py
import os
 
f = os.popen('ifconfig en0')
mac_des = f.readlines()[2]
print(mac_des[7:24])

原本以为要用正则表达式的,结果发现只要字符串切片就行了。

Linux只要改改字符串切片的位置就好。

结果

在这里插入图片描述
三分钟光速完成实验。

补作业去了

第二部分实验(基于socket的聊天室)我是用swift实现的,没几个人能cv,就不放上来了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
服务器端: package com.softeem.socket.server; import java.io.FileNotFoundException; import java.io.IOException; public class FileServer { /** * @param args */ public static void main(String[] args) { // 读取本地文件 try { java.io.FileInputStream fis = new java.io.FileInputStream( new java.io.File("d:\\数据库.zip")); // 转换成网络输出流 java.net.ServerSocket ss = new java.net.ServerSocket(9000); java.net.Socket sk = ss.accept(); //DataOutputStream 处理数据 数据的输出流 java.io.OutputStream os = new java.io.DataOutputStream( sk.getOutputStream()); // 利用网络输出流将文件传到客户端 边读边发送 int len=0; byte[] buff = new byte[1024]; while((len=fis.read(buff))!=-1){ os.write(buff, 0, len); os.flush(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 客户端: package com.softeem.socket.client; import java.io.FileNotFoundException; import java.io.IOException; import java.net.UnknownHostException; public class FileClient { /** * @param args */ public static void main(String[] args) { // 文件的输出流 try { java.io.FileOutputStream fos = new java.io.FileOutputStream( new java.io.File("e:\\database.zip ")); // 网络的输入流 java.net.Socket sk = new java.net.Socket("192.168.1.101",9000); java.io.InputStream is = new java.io.DataInputStream( sk.getInputStream()); // 接受网络输入流 写入文件 int len = 0; byte[] buff = new byte[1024]; while((len=is.read(buff))!=-1){ fos.write(buff, 0, len); fos.flush(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 有源码和体会,写的很详细和完整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值