-
mac网络编程
2011-10-10 09:31:39object-c socket网络编程 进行设备控制 -
MAC下学习UNIX网络编程
2019-06-02 21:27:46最近在看【UNIX网络编程 卷1 套接字联网API(第3版)】 想找个环境编译一下书上的代码。 研究了一下,发现源代码在mac上编译和linux编译几乎没有区别。 也对,mac本来就是基于FreeBSD,是比linux还unix的系统。 ...最近在看【UNIX网络编程 卷1 套接字联网API(第3版)】
想找个环境编译一下书上的代码。
研究了一下,发现源代码在mac上编译和linux编译几乎没有区别。
也对,mac本来就是基于FreeBSD,是比linux还unix的系统。
不过这原生的支持感还是让我惊叹。
我要用mac的原因是因为手上只有mac,而mac上有宇宙第一IDE:VS Code。。。
如果用阿里云ubuntu云主机,总感觉没有本地编译那么爽,那么畅快。
还是觉得VS Code比Vim好用。。。
在mac上编译直接按照unpv13e.tar.gz里面的README来就行,和linux上操作方法完全一样。
Execute the following from the src/ directory: ./configure # try to figure out all implementation differences cd lib # build the basic library that all programs need make # use "gmake" everywhere on BSD/OS systems cd ../libfree # continue building the basic library make
唯一要注意的是:在libfree目录下直接make会报编译错误。需要修改一个地方。
将libfree/inet_ntop.c第60行的size_t size改成socklen_t size。
- size_t size; + socklen_t size;
准备工作完毕,然后就可以在指定目录下编译自己想要编译的Example了。
cd ../intro # build and test a basic client program make daytimetcpcli ./daytimetcpcli 127.0.0.1 If all that works, you're all set to start compiling individual programs. Notice that all the source code assumes tabs every 4 columns, not 8.
-
mac下 unix网络编程环境安装
2020-12-01 09:13:18mac下 unix网络编程环境安装1.下载安装包unpv13e2.解压后文件后,在终端通过命令进入unpv13e文件夹,依次执行下列命令3.复制文件到相应路径4.尝试编译例程 本机环境 mac os 10.15.17 下载地址...
本机环境 mac os 10.15.171.下载安装包unpv13e
下载地址http://www.unpbook.com/src.html
2.解压后文件后,在终端通过命令进入unpv13e文件夹,依次执行下列命令
./configure cd lib make cd../libfree make
- 在libfree下make报错
inet_ntop.c:56:1: error: conflicting types for ‘inet_ntop’
解决办法:
在unpv13e/libfree下找到inet_ntop.c文件把#include <arpa/inet.h>注释掉
最终会在unpv13e文件夹中成功生成libunp.a文件
3.复制文件到相应路径
- libunp.a文件复制到usr/local/lib文件夹中
- -将unpv13e下的config.h和修改后的unpv13e/lib中的unp.h复制到usr/include文件夹中
- 将unp.h中的 #include “…/config.h” 改为 #include “config.h”
具体命令如下
sudo cp libunp.a /usr/local/lib sudo cp lib/unp.h /usr/include sudo cp config.h /usr/include
- 可能会遇到的问题记录
1.Operation not permitted:
原因:这是因为rootless机制未关闭
解决方法:
重启Mac,开机时长按command+R进入恢复模式,在上面的实用工具中找到teriminal/终端,输入
csrutil disable
关闭rootless机制(如果要再开启输入csrutil enable即可)
2.usr/include文件夹找不到:
解决办法1:安装command line Tools,在终端执行xcode-select --install
解决办法2:如果安装command line Tools不能解决,进行如下操作
#根目录挂载为可读写 sudo mount -uw / #建立软链 sudo ln -s "$(xcrun --show-sdk-path)/usr/include" /usr/include
4.尝试编译例程
确认libunp.a,unp.h,config.h已拷贝在相应文件夹下后,开始编译第一个例子daytimetcpcli.c;在unpv13e文件夹下,依次执行相应命令:
cd intro gcc daytimetcpcli.c -o daytimetcpcli -lunp
- -lunp的含义,-l 参数加上 libunp.a 去掉lib和后面的.a,链接静态库
成功则在intro文件夹下生成了可执行文件a.out,测试:
./daytimetcpcli 127.0.0.1
这时返回错误如下:
这个错误是由于daytime的服务程序未被打开- 解决办法:在unpv133/intro下编译daytimetcpsrv程序
gcc daytimetcpsrv.c -o daytimetcpsrv -lunp sudo ./daytimetcpsrv
再次运行客户端程序,执行成功
- 在libfree下make报错
-
Unix网络编程-Mac OS环境配置
2019-11-09 13:06:35虽然网上的材料已经足够丰富了,不过似乎还是或多或少出现问题,趁着自己记忆尤新,就先记下来了~! 首先如果你想跑第一个程序,你会很遗憾的发现并不能,因为缺乏作者写的头文件"dnp.h" 首先我们要下载源文件 ...虽然网上的材料已经足够丰富了,不过似乎还是或多或少出现问题,趁着自己记忆尤新,就先记下来了~!
首先如果你想跑第一个程序,你会很遗憾的发现并不能,因为缺乏作者写的头文件"dnp.h"- 首先我们要下载源文件
https://download.csdn.net/download/ts173383201/4505201 - 解压之后,cd 进入,并按照下面的步骤进行
./configure
cd lib
make
cd ../libfree
make
cd ../libgai
make
- 在上述步骤完成之后,我们在
cd ../
,执行cp libunp.a /usr/lib
- 将unp.h复制到
./lib
中,并修改里面的"include "../config.h"
为#include "config.h"
sudo cp ./config.h /usr/local/include
sudo cp ./lib/unp.h /usr/local/include
- 编译的时候
gcc sample.c -lunp
- 首先我们要下载源文件
-
golang网络编程:获取本机MAC地址
2020-08-12 20:53:58对于IP地址可以表示一个网络连接,但是无法唯一标识一台主机,而MAC地址是主机网卡的物理地址,这个对于一台主机来说是不会改变的。 func mac(){ // 获取本机的MAC地址 interfaces, err := net.Interfaces() if ...对于IP地址可以表示一个网络连接,但是无法唯一标识一台主机,而MAC地址是主机网卡的物理地址,这个对于一台主机来说是不会改变的。
func mac(){ // 获取本机的MAC地址 interfaces, err := net.Interfaces() if err != nil { panic("Poor soul, here is what you got: " + err.Error()) } for _, inter := range interfaces { fmt.Println(inter.Name) mac := inter.HardwareAddr //获取本机MAC地址 fmt.Println("MAC = ", mac) } }
上面的代码可以获得主机上的所有网卡的物理地址(例如笔记本电脑可以连接无线网和有线连接,这就是两个不同的MAC地址)
所以一般取第一个MAC地址作为唯一标识。func mac(){ // 获取本机的MAC地址 interfaces, err := net.Interfaces() if err != nil { panic("Poor soul, here is what you got: " + err.Error()) } //for _, inter := range interfaces { //fmt.Println(inter.Name) inter := interfaces[0] mac := inter.HardwareAddr.String() //获取本机MAC地址 fmt.Println("MAC = ", mac) //} }
-
编程获取ip地址与mac地址的对应关系_SXT DAY021 网络编程
2020-12-03 04:35:461 网络编程的基本概念网络编程的三要素:IP地址,端口号,通信协议网络通信协议国际标准化组织(ISO,即International Organization for Standardization)定义了网络通信协议的基本框架,被称为OSI(Open System ... -
Linux网络编程——原始套接字实例:MAC 头部报文分析
2015-03-30 20:26:48通过《Linux网络编程——原始套接字编程》得知,我们可以通过原始套接字以及 recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢?MAC 头部(有线局域网)注意:CRC、PAD 在组包时可以... -
【网络编程】Socket网络编程基础
2019-06-12 21:41:50文章目录网络编程概述Socket与TCP UDPSocket TCP演示报文段协议Mac地址IP、端口、远程服务器IPv4IPv6端口远程服务器 网络编程概述 什么是网络编程 网络编程从大的方面说就是对信息的发送到接收 通过操作相应Api调度... -
【Linux网络编程】原始套接字实例:MAC 头部报文分析
2016-08-30 22:33:14通过《Linux网络编程——原始套接字编程》得知,我们可以通过原始套接字以及 recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢? MAC 头部(有线局域网) 注意:... -
网络编程入门教程01——网卡(MAC与PHY)
2020-01-17 20:21:31由于自己是首次接触网络编程,所以本专栏与其说是一个教程,不如说是学习分享。我的写作目的是尽力简洁有效生动地介绍网络编程的内容,使看到本文章的入门读者不至于望而却步。 在介绍本节的正式内容之前,写给出OSI... -
【IOS网络通信】Mac&IOS Socket编程
2014-08-22 13:03:535.网络编程模型 三.socket接口编程示例 四.使用select 五.使用kqueue 六.使用流 注:文档中设计涉及的代码也都在本人github目录下,分别为socketServer和socketClient.对应着各个分支 -
Linux 网络编程——原始套接字实例:MAC 地址扫描器
2015-04-07 19:28:47如果 A (192.168.1.1 )向 B (192.168.1.2 )发送一个数据包,那么需要的条件有 ip、port、使用的协议(TCP/UDP)之外还需要 MAC 地址,因为在以太网数据包中 MAC 地址是必须要有的。那么怎样才能知道对方的 MAC ... -
编程获取ip地址与mac地址的对应关系_Python网络编程(1)
2020-12-04 12:20:20计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。功能:信息的传输... -
《Linux网络编程》: 原始套接字MAC头部报文
2019-01-04 18:15:53通过《Linux网络编程》: 原始套接字编程,我们可以通过原始套接字以及recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢? 注意:CRC、PAD 在组包时可以忽略 链路层数据包的其中... -
【Linux网络编程】02 mac地址 ip地址 port端口 netmask子网掩码
2020-03-09 20:25:17网卡:网络适配器 作用:用来发送接收数据的,将模拟信号转换成数字信号 mac地址:每块网卡都有一个全球唯一的标识ID:这个全球唯一的标识ID号 就是所说的mac地址(物理地址 48b 6字节) ip地址:用来标识主机或网卡... -
Linux 网络编程——原始套接字实例:MAC 头部报文分析
2018-10-23 18:54:51通过《Linux网络编程——原始套接字编程》得知,我们可以通过原始套接字以及 recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢? MAC 头部(有线局域网) 注意:CRC、PAD 在组包... -
【Linux网络编程】原始套接字实例:MAC 地址扫描器
2016-08-30 22:37:41如果 A (192.168.1.1 )向 B (192.168.1.2 )发送一个数据包,那么需要的条件有 ip、port、使用的协议(TCP/UDP)之外还需要 MAC 地址,因为在以太网数据包中 MAC 地址是必须要有的。那么怎样才能知道对方的 MAC ... -
mac 编译《unix网络编程》 的libunp.a
2016-09-10 23:01:281.下载unix 网络编程source code到本地 2.tar 解压 3.编译 ./configure cd lib make cd ../libfree make 在 lib free下面make的时候会报错 inet_ntop.c:56:1: error: conflicting types for 'inet_... -
网络编程
2020-10-27 15:15:30网络编程 1. 概述 计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的...