我正在开发一个SIP客户端。为此,我必须侦听端口5060以获取传入的SIP服务器消息。为此我编了一些东西。 (另外,我在程序中使用管理员权限。)
WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
if (hasAdministrativeRight == true)
{
TcpListener server;
Int32 port = 5060;
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
server = new TcpListener(localAddr, port);
server.Start();
Byte[] bytes = new Byte[256];
String data = null;
while (true)
{
Console.Write("Waiting for a connection... ");
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("Connected!");
data = null;
NetworkStream stream = client.GetStream();
int i;
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine("Received: {0}", data);
data = data.ToUpper();
byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
stream.Write(msg, 0, msg.Length);
Console.WriteLine("Sent: {0}", data);
}
client.Close();
}
}
我收到SocketException:“尝试以其访问权限禁止的方式访问套接字”(本机错误代码:10013)...
你对此有什么建议吗?
答案 0 :(得分:1)
您似乎正在运行两个应用程序,他们正在尝试 访问同一个套接字。
Microsoft says about your problem:
WSAEACCES(10013)
- 翻译:权限被拒绝
说明:尝试了 以访问禁止的方式访问套接字 权限。例如,广播地址时会发生此错误 用于发送到但不使用广播权限 setsockopt的(SO_BROADCAST)。
WSAEACCES的另一个可能原因 错误是当调用bind(Wsapiref_6vzm.asp)函数时(在 Microsoft Windows NT 4.0 Service Pack 4 [SP4]或更高版本),另一个 程序,服务或内核模式驱动程序绑定到同一地址 独家访问。这种独家访问是一项新功能 Windows NT 4.0 SP4及更高版本,它是通过使用实现的 SO_EXCLUSIVEADDRUSE选项。