首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Winform程序外网如何访问

2012-03-24 
Winform程序外网怎么访问?Winform程序怎么像QQ那样,有客户端可以进行外网登录。。。好像要什么IP映射什么的,

Winform程序外网怎么访问?
Winform程序怎么像QQ那样,有客户端可以进行外网登录。。。
好像要什么IP映射什么的,不知道怎么弄?
有谁知道怎么弄的,能给出详细列子的100分全送

[解决办法]
没独立ip,就用花生壳,呵呵
[解决办法]
TCP/IP?
[解决办法]
QQ的也是有QQ客户端需要安装的,腾讯那边还有很多数据服务器的。
[解决办法]
路由器的=>转发规则=》虚拟服务器
设置一下就可以了
[解决办法]
用WCF最好实现,将数据提供层和界面表现层分离,数据库存储这块在WCF服务端实现,用户界面展示所需数据在WCF客户端实现。
[解决办法]

探讨

引用:

路由器的=>转发规则=》虚拟服务器
设置一下就可以了



都不说清楚,说得这么简单

[解决办法]
如果没有装路由器。用你的IP就可以直接访问了。自己弄个TCP/IP的东西就可以了。
[解决办法]
如果你们是access数据库。好象是要架VPN。
ACCESS数据库是不支持tcp,ip这种方式访问的。
[解决办法]
N年以前网上VB的例子。
[解决办法]
access数据库不能通过IP来访问的,可以用WEBSERVIEC,不过麻烦,建议用SQL 或做B/S吧

SQL直接用外网IP来登陆,客户端改下IP就可以连接了。。
不过如果公司有用路由器。在管理界面下有个转发规则,
你用外网发起连接时数据库用的是1433端口,路由器要指定这个端口访问哪个机器(服务器192.168.0.2)

服务端口 IP地址
1433 192.168.0.2 ALL
[解决办法]

局域网内要共享ACC数据库,不过好像问题会很多。。。独占**~~~ 不是很了解, 有点类型 EXCEL

access应该是小型桌面数据库而不是网络数据库。
[解决办法]
access还要外网!换成sqlserver不就行了。
[解决办法]
捞一些分:

1、最好,你要有一个响应服务程序:服务器程序;
2、如果是固定IP(就是他们说的:独立IP)那就好办,只要你们公司帮花钱去租个,一般般测试用的话,5K左右就可以了,如果是商业服务器,那会很贵,性能要很好。
3、在该服务器上安装部署好你的服务器响应程序即可。
4、客户端,只要写好你要连接的服务器IP地址即可(Host:Port,如:自己测试的局域网:192.168.1.88:8888,这是我的服务器程序IP地址信息)。

5、如果要搞商业服务,除了你们开发这环,还要有:维护运营这环,即:维护部门,对服务器运营的实时监控人员,或是客服人员。
[解决办法]
写个程序,放在access数据库所在的机器运行,用来监听客户端的连接请求,收到请求后,把数据库数据通过网络发送到客户端。
接下来不是外网怎么访问内网机器的问题了。 假定内网机器的IP为192.168.1.8, 端口为:9908

有两个解决办法:
1. 较简单的:
在路由器上作下端口映射(可能不同路由器的操作有所不同),告诉路由器,发送到9908端口上的数据统统转发到192.168.1.8的9908端口,这样192.168.1.8这台机器就能收到外网的访问请求了。

2.较复杂的:
使用NAT穿透技术,打洞穿墙。这个网上可以找到很多资料,就不细说了。
[解决办法]
各位大侠,
没有 小弟看得懂的?可以操作的。
[解决办法]
如果写一个程序用socket 的话,
那是在 公司的电脑搞一个 [公开的IP ]和[端口号]和 [密码]?

连上了,家里的[客户端]发sql 语句到 [公司你写那个window程序],[公司那个window程序]读解 执行,返回结果?
[解决办法]
探讨
楼上不是有人说access数据库不能外网访问么?

[解决办法]
你可以将公司建一个web服务器,使用webservice调用你的数据库,有个例子你一看就懂了。
  

下面以一个简单例子为例:

(一)新建——-项目---Visual C#---web---ASP.NET Web 服务应用程序,命名为TestWebService

此时的目录结构如图所示:



我们修改Service1.asmx的名字为:MyService.asmx

同时修改文件中的class名

public class MyService: System.Web.Services.WebService
{

[WebMethod]
public string HelloWorld()
{
return "Hello World";


}
}

同时修改文件MyService.asmx(右击--查看标记;如果在vs环境下双击打开的是.cs文件)

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="TestWebService.Service1" %>改为

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="TestWebService.MyService" %>

 

(二)重新生成项目,右击MyService.asmx,选择“在浏览器中查看”,即可检查本项目是否有语法错误

(三)在MyService.asmx添加指定方法

using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;

namespace TestWebService
{
/// <summary>
/// Service1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class MyService: System.Web.Services.WebService
{

[WebMethod]//必须要有的,为了说明,其下是一个方法,每一个方法前面都需要有。
public string getName()
{
return "Hope";
}

[WebMethod]
public string getAge()
{
return "25";
}

}
}

重新生成项目,右击MyService.asmx,选择“在浏览器中查看”,效果如下:

 

 

(四)发布在外网上

这里我是在本机上测试的,所以没有必要发布。如果要发布到外网上,我们可以通过:

把bin文件下的文件以及与bin(包括.dll和.pdb文件)同级目录的asmx文件上传到外网即可。

(五)使用web service接口。

新建一个普通的windows应用程序,右击,添加web引用----

如图:



改一下web引用名为:HopeWebService如图:



此时,我们可以使用webservice中的方法了。通过HopeWebService我们可以访问其中的两个方法。

(六)使用方法:

HopeWebService.MyService obj = new HopeWebService.MyService();
MessageBox.Show("name is:" + obj.getName()+";age is:" + obj.getAge());




[解决办法]
关于实现外网访客。可以查一下相关UDP打洞技术。 这项技术用于实现无固定IP相互通讯。
[解决办法]

探讨
这个 非常值行攒。那样的!
只有这样的回答才是作用。

[解决办法]
探讨

引用:
这个 非常值行攒。那样的!
只有这样的回答才是作用。

教了我一招了,

[解决办法]
探讨
呵呵,这样也可以的话,叫楼主把access数据库拷回家就得了,省事。

[解决办法]
楼主应该是为 socket 通讯 方面,如何公开一个端口比外网连接烦脑吧。

[解决办法]
远程连接access数据库的几个方法: 

1.建立VPN(Virtual Private Network),这样你的电脑和主机的连接就与局域网无异,然后把服务器中mdb文件所在的Folder共享即可。ADO连接如下: 

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\ServerName\DatabaseFolder\Database.mdb;Jet OLEDB:Database Password=databasepw;Persist Security Info=False" 

2.把Database放在Web Server上,使ADO或RDO通过RDS(Remote Data Service)及IIS来实现: 

如果服务器像上面Jave大侠说那样设置了ODBC DSN的话: 

oConn.Open "Provider=MS Remote;" & _ 

"Remote Server=http://myServerName;" & _ 

"Remote Provider=MSDASQL;" & _ 

"DSN=AdvWorks;" & _ 

"Uid=myUsername;" & _ 

"Pwd=myPassword" 


如果设置的是OLE DB Provider 的话: 

oConn.Open "Provider=MS Remote;" & _ 

"Remote Server=http://myServerName;" & _ 



"Remote Provider=Microsoft.Jet.OLEDB.4.0;" & _ 

"Data Source=c:\somepath\mydb.mdb", _ 

"admin", "" 

3.自己编写服务器程序,通过TCP/IP,传递Recordset。 

4.使用第三方控件,如:ADO Anywhere或UDAParts RDB等。具体查看 

http://www.adoanywhere.com 

http://www.udaparts.com/ 

5.使用XMLHTTP 

-------------------------------------- 

附 远程连接SQL Server的方法: 

ConnStr = "Provider=SQLOLEDB.1;Network Library=DBMSSOCN;Persist Security Info=True;User ID=UserName;Password=Password;Initial Catalog=远程数据库名;Data Source=203.129.92.1"
[解决办法]
前期基本的access不能外网访问,这样基础的东西都没弄明白。这程序开发的。
还是重新来做吧(改成sql很简单)。access不支持事务。数据量大还有问题。

[解决办法]
你既然用的ACCESS,应该各个客户端都是通过你的专用端口访问你的应用的。(据我所知ACCESS不像SQL Server那样支持多用户呦)。因此很简单,只要如下即可:
1)有公网IP(如果是ADSL上网就得想办法用DDNS)。
2)服务端口有办法绑在这个IP上。
 一般如果服务器在内网,通过路由器上网(或者宽带路由器),路由器都支持端口映射,只要服务器能上网,并且在宽带路由器指定一个端口映射服务器的系统服务端口即可。没那么复杂。

记住,外网用户使用的访问地址和端口是路由器的地址和端口呦,别整混喽。
如果是动态IP,做DDNS,客户端就得用域名地址了。所以看看你的客户端,程序,最好可以方便设置地址。
[解决办法]

探讨

引用:

你既然用的ACCESS,应该各个客户端都是通过你的专用端口访问你的应用的。(据我所知ACCESS不像SQL Server那样支持多用户呦)。因此很简单,只要如下即可:
1)有公网IP(如果是ADSL上网就得想办法用DDNS)。
2)服务端口有办法绑在这个IP上。
一般如果服务器在内网,通过路由器上网(或者宽带路由器),路由器都支持端……


[解决办法]
探讨
是CS的

[解决办法]
1:即使做CS程序,访问数据库服务器的程序也应该单独提出来,可以使用webservice来访问数据库,客户端访问webservice调用业务方法即可。
2:如果不改变现有程序,可以架设vpn,使用虚拟局域网来访问数据库
[解决办法]
请楼主自行搜索CS程序的详细定义,再思考S指的是什么,再看vs里面相应的webservice或者WCF。楼主绝对是用别人的号登陆的。两颗星的人绝对不能问出这么低级的问题来。
[解决办法]
access 适合做本地程序 联网滴最好sql的说

热点排行