我的本意是想做一个类似QQ那样的IM软件(当然是简单得多,用户也不多的那种),不管你是用外网IP还是在局域网中通过代理服务器上网,只要你能上网用户之间就可以象QQ上一样随意聊天,可是我发现Socket好象只能用在局域网中,我把附近书店的书都翻遍了也未找到Socket在internet上如何运用,难道套接字不能用在这里?那有没有别的方法?
困扰已久,所以结帖材大难可能会晚些。垦请各位vc高手发表高见啊!
可能问得太笼统了,大家给个解决问题的思路或方向也很感激,谢谢了!!
困扰已久,所以结帖材大难可能会晚些。垦请各位vc高手发表高见啊!
可能问得太笼统了,大家给个解决问题的思路或方向也很感激,谢谢了!!
解决方案 »
- Firebug,IE Developer Toolbar 鼠标悬停时选中元素的实现方法?
- CFILE read 行读取( 求代码)
- 单击任务栏上的应用程序,触发什么消息?
- 求使用Grid ActiveX Control的例子
- 如何在一个对话框类成员函数中调用另一个类成员函数
- 可以生成DEBUG版本的程序,但是生成RELEASE版本的却不行,怎么办?
- 怎样实现ocx只注册一次?升级时不用注册!
- 谁能将这句C#代码转换成VC++,哪为高手帮我看看啊!~~~~~~~~~~~~~~~`谢谢啊
- 怪!怪!怪!套接字接收发送问题
- 一个关于属性对话框的问题
- 一个简单问题,help
- 请教:在win98下生成的exe文件,为什么在xp系统下不能运行呢?重新在xp下编译,为什么生不成exe文件呢?
不过要做到像QQ那样无论外网内网都可以连上的,你还要去了解一个NAT
如果要像QQ一样,还要解决NAT,防火墙等问题。
Why Exception Handling when coding
SEH Vs C++ Exception
Exception Handling Modal in Visual C++
Referencehttp://davidripple.blogchina.com/2337528.html
是呀,SOCKET在INTERNET上的应用必须要解决nat/firewall的问题,否则被拦截就无法实现通信了。
至于双方都是外网的情况我还没试。
请各位高手发表高见啊!!
我的想法和你一样,QQ采用的方案应该就是这种典型的C/S模式。
我测试用的方法(A机有外网IP,相当于服务器,B机为内网机器,相当于一个客户),可现在问题是用SendTo(LPCTSTR(m_strData), iLen,1001, IP)的方法服务器无法收到来自客户的信息。不解是何故!
请大家指点一下!
另,本贴是小弟在CSDN上的第一个问题贴,经验不足,给的分太少了(瀑布汗......),请高手们不吝赐教呀,小弟先谢了!!
CSocketUDP m_uSocket; //CSocketUDP为CSocket的派生类
int iLen;
int iSend;
CString m_strData;
m_strData="This is a test string.";
m_uSocket.Create(1001, SOCK_DGRAM);
m_uSocket.Bind(1001);
iLen = m_strData.GetLength();
//下面的IP"218.85.104.162"为我当时的外网IP
iSend = m_uSocket.SendTo(LPCTSTR(m_strData), iLen, 1001, "218.85.104.162");
享用SOCKET通讯必须通讯两端都有一个有效地地址,你说无法在internet上使用
多半是因为没有一个有效的地址造成的
小弟初学网络编程不久,在cmd下用ipconfig/all命令显示如下内容是否说明我有外网的有效地址?请多多指教!
--------------------------------------------------------------------------------------
D:\Documents and Settings\www>ipconfig/allWindows IP Configuration Host Name . . . . . . . . . . . . : ice
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : NoEthernet adapter 本地连接: Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : National Semiconductor DP83815-Based
PCI Fast Ethernet Adapter
Physical Address. . . . . . . . . : 00-50-8D-62-4A-5B
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 218.193.10.252
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 218.193.10.1
DNS Servers . . . . . . . . . . . : 210.34.0.14
210.34.0.18PPP adapter 宽带连接: Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : WAN (PPP/SLIP) Interface
Physical Address. . . . . . . . . : 00-53-45-00-00-00
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 218.85.105.129
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 218.85.105.129
DNS Servers . . . . . . . . . . . : 202.101.103.54
202.101.103.55
NetBIOS over Tcpip. . . . . . . . : DisabledD:\Documents and Settings\www>
-----------------------------------------------------------------------------------------
另外,如果Socket用在internet上的条件真是要通信双方都得有外网IP的话,那Socket在internet方面不就是“鸡肋”一块了吗?
而你连接外网通讯,就牵涉到传输层甚至网络层的问题了,也就是了楼上几位说的NAT/防火墙问题了。
不用急,慢慢来。
ps:分一开始给的少,后来也可以加的:)
socket通讯当然是依附于协议,只要有协议可以保证,socket当然可以实现~~~
看来问题不在Socket,而是基本的协议、NAT和防火墙等等。路漫漫其修远兮,吾将上下而求索......
结贴了,第一次发贴,给的分太少了,请大家别笑我小气,呵呵