日期:2014-05-17  浏览次数:21266 次

C# 不支持此协议版本????

             //使用IPV4
            client = new TcpClient(AddressFamily.InterNetwork);
            //实际使用时要将Dns.GetHostName()变为服务器域名或IP地址
            IPAddress[] serverIp = Dns.GetHostAddresses(Dns.GetHostName());
            //创建一个委托,让其引用在异步操作完成时调用的回调方法
            AsyncCallback requestCallback = new AsyncCallback(RequestCallback);
           
            //将事件的状态设置为非终止状态
            allDone.Reset(); MessageBox.Show(IPAddress.Parse(GetIpAddress()).ToString());
            client.BeginConnect(serverIp[0], 51888, requestCallback, client);

编译器说 client.BeginConnect(serverIp[0], 51888, requestCallback, client); 不支持此协议版本。各位大神该怎样解决??
------最佳解决方案--------------------
debug 一下 serverIp 估计是 IPv6 的。
------其他解决方案--------------------
引用:
debug 一下 serverIp 估计是 IPv6 的。


我倒感觉是IPv4的。
但是你有感觉不,一般在本机取得自身IP的时候,特别是新的操作系统,会显示一个ipv6的loopback, 也就是::1这个造成了LZ的问题,你觉得可能不……

所以我感觉lz应该不要直接用[0],而是用ip的正则匹配一下ipv4,取得第一个match
------其他解决方案--------------------
引用:
debug 一下 serverIp 估计是 IPv6 的。


oh no……今天不宜不宜回答问题……好吧我承认我看错fangxing的回复了。
意思是一样的
------其他解决方案--------------------

oh no……今天不宜不宜回答问题……好吧我承认我看错fangxing的回复了。
意思是一样的[/quote]
我打算写一个能够外网聊天的软件, 上面客户端的代码; 服务端监听我是这样写的
 listener = new TcpListener(IPAddress.Parse("61.157.97.82"), 51888);
 listener.Start(); 
但是一运行到 listener.Start(); 就会弹出
请问是啥原因啊??
我的思路: 服务器监听本机外网ip, 客户端连接服务端外网IP;然后进行聊天;
------其他解决方案--------------------
引用:
引用:debug 一下 serverIp 估计是 IPv6 的。

oh no……今天不宜不宜回答问题……好吧我承认我看错fangxing的回复了。
意思是一样的

我打算写一个能够外网聊天的软件, 上面客户端的代码; 服务端监听我是这样写的
 listener = new TcpListener(IPAddress.Parse("本机外网IP"), 51888);
 listener.Start(); 
但是一运行到 listener.Start(); 就会弹出

请问是啥原因啊??
我的思路: 服务器监听本机外网ip, 客户端连接服务端外网IP;然后进行聊天;
难道不能直接这样吗?
------其他解决方案--------------------
我明白了,这里的listener = new TcpListener(IPAddress.Parse("本机外网IP"), 51888);第一个参数应该是本地IP;直接这样listener = new TcpListener(51888);就行了
------其他解决方案--------------------
引用:
我明白了,这里的listener = new TcpListener(IPAddress.Parse("本机外网IP"), 51888);第一个参数应该是本地IP;直接这样listener = new TcpListener(51888);就行了