socket跨internet通信
由于客户的需要,项目中需要实现一个跨internet的聊天功能,如何实现跨internet?请高手指点 --------------------编程问答-------------------- 兄弟们,定一下啊,要救命的东西 --------------------编程问答-------------------- 什么叫"跨INTERNET"的功能啊?帮顶吧 --------------------编程问答-------------------- 跨INTERNET?Socket不管Internet还是Intranet,只要是网络,能连接就能用……当然,Internet是要考虑下防火墙的吧? --------------------编程问答-------------------- 比如说我要实现聊天的功能,客户端发消息给服务器,服务器再把消息转发给目的客户端,这个地址的映射该如何实现 --------------------编程问答-------------------- 使用一个Dictionary<string,Socket>来存储一个用户列表。这里的string就是用户ID,Socket就是用户的连接。当一个用户需要发送信息给另一个用户的时候,信息必须包括另一个用户的用户ID。服务器转发的时候,通过这个用户ID在Dictionary<string,Socket>找到用户的Socket,然后将信息的内容加上发送方ID,然后将信息发送到目的Socket。这是服务器部分。因为Socket在连接的时候会自动建立一个信息的通道,只要连接上,你不用管它的IP,直接处理发送接收就好,其他的交给系统自己去处理。 --------------------编程问答-------------------- 和局域网的聊天一模一样,但是,server端我们一般采用控制台应用程序或者win应用程序,现在服务器提供商只提供iis,该如何实现呢? --------------------编程问答-------------------- 如果要用IIS就更简单了,Client端使用WebRequest和WebResponse类来接发。只是要注意,如果这样做的话,你的Client端就要每隔一定时间(比如3秒)使用WebRequest看服务端是否有新的消息。因为IIS不会主动通知Client端有新消息。
另外一个思路,是让IIS充当一个“中介”的角色。过程如下:
1. Client A -> Server: 登陆,这时候纪录下Client A的地址和监听端口
2. Client B -> Server: 登陆,这时候纪录下Client B的地址和监听端口
3. Client A -> Server:请求和B通话
4. Server -> Client A: Client B的地址和端口
5. Client A -> Client B:请求连接,发送Client A地址和端口
6. Client B -> Client A:接受连接,开始对话 --------------------编程问答-------------------- 使用UDP打洞技术 --------------------编程问答-------------------- 让客户买硬件vpn --------------------编程问答--------------------
就算是用HTTP方式,
那也是可以在Socket中实现的,
主要还是TCP,
只不过是你发的命令字不一样了,
如发GET、POST等
关于Socket
给个参考资料
http://msdn2.microsoft.com/zh-cn/library/system.net.sockets.socket(VS.80).aspx
其要点算是在这吧
Socket tempSocket = new Socket(ipe.AddressFamily, ocketType.Stream,ProtocolType.Tcp);
--------------------编程问答-------------------- 嗯,新手飘过,受教了! --------------------编程问答-------------------- WebSocket吧,嗲,同时搞定网页、Desktop --------------------编程问答--------------------
哈哈哈
补充:.NET技术 , C#