手机
当前位置:查字典教程网 >编程开发 >C#教程 >Socket不能选择本地IP连接问题如何解决
Socket不能选择本地IP连接问题如何解决
摘要:现在碰到一个刺手的问题,是这样的!我的客户端要通过socket与服务器端进行通信,可是客户端服务器上是双ip地址(比方是192.168.1....

现在碰到一个刺手的问题,是这样的!

我的客户端要通过socket与服务器端进行通信,可是客户端服务器上是双ip地址(比方是192.168.1.10和192.168.1.20),可是 服务器端只允许192.168.1.20进行通信,进行了ip限制,在客户端上192.168.1.10是主ip,192.168.1.20是从ip,如 果我简单通过socket建立连接,程序默认会以192.168.1.10进行通信,这样服务器端会拒绝,我应该如果写才能够解决这个问题呢?

不要手动,要用程序自动实现 ,可以绑定本地的任何IP地址。

如本机IP地址为:

192.168.1.205,192.168.1.204,192.168.1.203

实现结果为:

C:>netstat -an | find "59.39.71.94"

TCP 192.168.1.205:2302 59.39.71.94:80 ESTABLISHED

C:>netstat -an | find "59.39.71.94"

TCP 192.168.1.203:12302 59.39.71.94:80 ESTABLISHED

C:>netstat -an | find "59.39.71.94"

TCP 192.168.1.204:7802 59.39.71.94:80 ESTABLISHED

方便的话给个代码吧!谢谢!

复制代码 代码如下:

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 string serverIp = "59.39.71.94";

int serverProt = 80;

string clientIp = "192.168.1.104";

int clientProt = 8012;

var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

var ipHostEntry = Dns.GetHostEntry(serverIp);

var ipEndPoint = new IPEndPoint(ipHostEntry.AddressList[0], serverProt);

var address = IPAddress.Parse(clientIp);

if (address != null)

{

var localEp = new IPEndPoint(address, clientProt);

socket.Bind(localEp);

}

socket.Connect(ipEndPoint); //建立长连接

以上代码就可以完全实现上面的功能。

【Socket不能选择本地IP连接问题如何解决】相关文章:

C#使用itextsharp生成PDF文件的实现代码

c#调用c++方法介绍,window api

xml 中的冒号 读取问题的解决

c#(Socket)同步套接字代码示例

使用checked语句防止数据溢出的解决方法

将DataTable转换成List<T>实现思路及示例代码

c#二进制逆序方法详解

C# 无需COM组件创建快捷方式的实现代码

C# 一个WCF简单实例

c#之圆形无标题栏椭圆窗体的实现详解

精品推荐
分类导航