SOS:小女子紧急求助!!!帮顶有分,在线等

marysxj 2009-02-03 09:47:03
本人不了解通信方面的知识,公司现在想做一个内部使用的在线聊天,在线传送文件的类似于QQ一样的通讯工具。
要求是广域网内使用。

在网上下载了一些源代码实例。大概了解了一点。

现在想用XMPP协议来实现,期间有用到XML,Thead等。

问题是:局域网内可以测试实现,但是广域网却一直提示:连接服务器失败! 肯定大家尤其是懂行的人来帮助一下。

源码如下(大部分借鉴别人的):

服务器端:
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 10000);
private void Listen()
{
listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
listener.Bind(localEndPoint);
listener.Listen(10);

m_Listening = true;

while (m_Listening)
{
allDone.Reset();
Console.WriteLine("Waiting for a connection...");
listener.BeginAccept(new AsyncCallback(AcceptCallback), null);
allDone.WaitOne();
}

}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}

public void AcceptCallback(IAsyncResult ar)
{
allDone.Set();
Socket newSock = listener.EndAccept(ar);

agsXMPP.XmppSeverConnection con = new agsXMPP.XmppSeverConnection(this,newSock);
}


客户端:
在登陆页面就出现提示 连接服务器失败
private XmppClientConnection connection;
connection = con;
connection.Username = tbx_user.Text;
connection.Server = tbx_server.Text;
connection.Password = tbx_pwd.Text;
connection.Port = 10000;
connection.Resource = "Resource";

this.DialogResult = DialogResult.OK;

...全文
760 116 打赏 收藏 转发到动态 举报
写回复
用AI写文章
116 条回复
切换为时间正序
请发表友善的回复…
发表回复
ksig188 2010-05-28
  • 打赏
  • 举报
回复
我现在开始关注,不晚吧?
xuehan2520 2009-08-26
  • 打赏
  • 举报
回复
我使用agsxmpp开发的时候也遇到同样的问题!外网无法连接的!telnet 是可以的!程序肯定有问题!
顾君彦 2009-02-05
  • 打赏
  • 举报
回复
服务器端如果已经监听10000端口,想测试物理网络是否已经通,
则可以使用 telnet ip地址 端口号的方式。

一般连接上后会有光标待等输入的状态。

如果可以连接,则说明服务器端已经打开此端口,并处于监听状态。

如果telnet可以正常连接,则可使用客户端进行一次连接,请注意客户端中填写的服务器端地址,必须是公网地址。因为你在公网上连接内网地址是不能连接上的。

如果客户端填写了公网地址去连接服务器连接不上,则一般来讲是防火墙问题,可以检查客户机本机上的防火墙是否将你的程序阻止了。

祝你成功。
hangang7403 2009-02-04
  • 打赏
  • 举报
回复
UP
yueyebohe 2009-02-04
  • 打赏
  • 举报
回复
学习~
大神来了丶 2009-02-04
  • 打赏
  • 举报
回复
新年快乐 jf
marysxj 2009-02-04
  • 打赏
  • 举报
回复
[Quote=引用 106 楼 simonezhlx 的回复:]
问问题就问嘛,还要冒充女孩儿,呵...
[/Quote]

偶真的是女孩啊,真晕
nevana 2009-02-04
  • 打赏
  • 举报
回复
顶吧
撕烤兔 2009-02-03
  • 打赏
  • 举报
回复
广域网需要考虑穿透防火墙问题。因为很多人上网是透过NAT共享等方式实现的。建议搜索下穿越防火墙这块的资料,也可以看下P2P原理。我想大概的方向应该是这样。
readfuture 2009-02-03
  • 打赏
  • 举报
回复
俺也不会,帮顶
总哈哈 2009-02-03
  • 打赏
  • 举报
回复
下一个agsxmpp看看吧,要是早点,我还可以给你一些源码,但是现在辞职了,没了!
a12321321321312321 2009-02-03
  • 打赏
  • 举报
回复
路由里面的端口映射设下, 你门公司用的是什么路由?你不会弄公司网管应该会吧.
marysxj 2009-02-03
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 mickey365 的回复:]
引用 14 楼 marysxj 的回复:
引用 6 楼 findcaiyzh 的回复:
端口10000,被防火墙block了?


局域网内部和防火墙有关系吗?

XMPP协议理论上应该是局域网和广域网都可以实现的。

IP是内部IP还是外部IP?
如果是内部IP的话,那么就需要路由器的端口映射。
如果内网能用,外网不能用的话,感觉就是端口映射的。
你连服务器用的是什么IP?
[/Quote]

连服务器用的是外网IP,如果是内网IP,应该没有问题。
dingpin 2009-02-03
  • 打赏
  • 举报
回复
帮顶,关注
ziyouren521125 2009-02-03
  • 打赏
  • 举报
回复
帮顶
liushuyong08 2009-02-03
  • 打赏
  • 举报
回复
帮顶,学习一下。
sunyuqian 2009-02-03
  • 打赏
  • 举报
回复
学习
ycz_0 2009-02-03
  • 打赏
  • 举报
回复
到路由上面映射一下端口
Gavin_Y 2009-02-03
  • 打赏
  • 举报
回复

学习
feifeiyiwen 2009-02-03
  • 打赏
  • 举报
回复
帮顶,学习一下。
加载更多回复(95)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧