当前位置: 技术问答>linux和unix
问一个socket的问题
来源: 互联网 发布时间:2016-07-22
本文导语: 各位老大,请教一个问题,我在HPUX上系统上创建一个SOCKET对象,结果返回错误,错误码为1,“不是超级用户”!!! 很是疑惑,印象中好像没有这个超级用户限制啊,请教各位,有没有碰到这个问题过,如何解决?...
各位老大,请教一个问题,我在HPUX上系统上创建一个SOCKET对象,结果返回错误,错误码为1,“不是超级用户”!!!
很是疑惑,印象中好像没有这个超级用户限制啊,请教各位,有没有碰到这个问题过,如何解决??
创建socket代码如下,使用icmp协议
sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
很是疑惑,印象中好像没有这个超级用户限制啊,请教各位,有没有碰到这个问题过,如何解决??
创建socket代码如下,使用icmp协议
sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
|
The process may need to have appropriate privileges to use the socket()
function or to create some sockets.
解决:提升权限|试一下SOCK_DGRAM
function or to create some sockets.
解决:提升权限|试一下SOCK_DGRAM
|
创建原始套解字好像必须需要有超级用户权限吧,因为对原始套接子的操作是位于网络层,既系统内核区,而SOCK_DGRAM或SOCK_STREAM,一个是无连接的用户数据报型的,一般使用UDP协议,另一个是面向连接的数据流型,一般使用TCP协议,对这两种类型的套接字的操作是位于应用层(即用户层),所以普通用户即可,所以在使用原始套接字,要先判断一下当前用户是否是超级用户,在Linux的C里,可以getuid()来判断,返回值为0就表示是超级用户.
|
SOCK_RAW
这个你必须得是root权限。
win下的原始套接字很多功能都完全限制了呢,linux还算好的/
这个你必须得是root权限。
win下的原始套接字很多功能都完全限制了呢,linux还算好的/
|
|
你想创建原始socket,当然要root权限。
普通的socket,普通用户就可以。
普通的socket,普通用户就可以。
|
创建原始套接字,需要root权限
|
ping居然还要root权限,回头试试
|
规约不支持 是什么意思?