如果是点对点的聊天信息的话
还是UDP比较合适
直接使用CSocket类 而没有手工加创建线程的代码的话 不是多线程的
也就是说是在主线程运行的
我之前写过一个简单的聊天程序 你可以参考下
希望对你有帮助
看你的聊天工具是点对点还是只是与服务器通讯,服务器负责转发到其他指定的用户那里
这样的话,都差不多
用户,有独立因特网IP的,有局域网内网的,随便
用户的MFC聊天工具定时连接服务器检查有没有自己的信息,有就取过来显示
自己要发送信息,就连接服务器,把信息塞给服务器,告知发给哪位用户
完了
如果是点对点的,首先就是要知道对方的IP,局域网可以扫描,如果固定监听某个或某几个/某段端口的话,但是广域网必须有一个固定的服务器,直接有因特网IP的服务器
大家都去连接这个服务器,通过与服务器通信,查询在线人列表,IP,端口,拥有因特网IP地址的用户就可以直接连接对方的IP端口,要连接到内网的用户,就需要利用UDP协议来打洞,打洞好了的话,你就可以直接连接对方,而不需要通过服务器中转了
即使两个都是内网的用户聊天,打好洞,也就是路由器NAT做了端口映射,这两个内网用户就可以点对点直连了
'xiansr2014/2/7 vbnet2010 调试通过
Imports SystemNet
Imports SystemNetSockets
Imports SystemText
Public Class Form1
Private Sub Button1_Click(sender As SystemObject, e As SystemEventArgs) Handles Button1Click
Dim udpClient As New UdpClient(11000)
Try
udpClientConnect("127001", 11000)
Dim sendBytes As [Byte]() = EncodingASCIIGetBytes(RichTextBox1Text)
udpClientSend(sendBytes, sendBytesLength)
Dim RemoteIpEndPoint As New IPEndPoint(IPAddressAny, 0)
Dim receiveBytes As [Byte]() = udpClientReceive(RemoteIpEndPoint)
Dim returnData As String = EncodingASCIIGetString(receiveBytes)
RichTextBox2Text = "接收到: " + returnDataToString()
'DebugPrint(("This message was sent from " + RemoteIpEndPointAddressToString() + " on their port number " + RemoteIpEndPointPortToString()))
udpClientClose()
Catch ex As Exception
stop
End Try
End Sub
End Class
以上就是关于我用MFC中的CSocket写的程序,怎么样才能让客户端也能收到服务器端的信息呢全部的内容,包括:我用MFC中的CSocket写的程序,怎么样才能让客户端也能收到服务器端的信息呢、有谁用过MFC编写过聊天工具,,局域网聊天工具网上有,问题是MFC能实现广域网聊天功能吗、vb.net 怎样用UDP 协议 写一个聊天程序啊如图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)