我mfc写一个聊天程序,在服务器端监听的端口是6000,但客户端有连接过来是进入OnAccept()
在OnAccept中调用了Accept函数,生成一个新的Socket,那么我想这个新的socket应该有新的端口了(是吗?),但是我用GetSockName(),查看了一下,端口竟然是6000,我同时连了好几个客户端,Accept()后新的Socket的端口都是6000,能不能给个解释?我想应该是每个不同的连接都有不同的端口号啊,而且应该和监听端口不一样啊,请赐教!
在OnAccept中调用了Accept函数,生成一个新的Socket,那么我想这个新的socket应该有新的端口了(是吗?),但是我用GetSockName(),查看了一下,端口竟然是6000,我同时连了好几个客户端,Accept()后新的Socket的端口都是6000,能不能给个解释?我想应该是每个不同的连接都有不同的端口号啊,而且应该和监听端口不一样啊,请赐教!
解决方案 »
- vc2008 ATL OLEDB Custumer(使用者)模板使用后,读取数据库内容正常,如何更改(删除)数据库表格内容
- C++交流圈(63370034)[希望高手能垂青]
- 一个奇怪的问题
- 文档焦点的问题??
- 请教麦克风输入/输入声音的问题.
- 很菜的问题:显示图像的时候,怎样刷新客户区?
- 多行的CEdit如何在里面用程序让它换行。
- 谁有More Effective中文电子书!
- 我的属性页为什么不能显示控件?
- MFC程序button类继承,自绘一个按钮,但是按钮不能连续点击,每次要间隔零点几秒才能继续点击。
- 如何MDI程序刚出现时,不要生成子文档????
- 怎么样才能在一个对话框中嵌套另一个对话框
在OnAccept中我的代码如下
m_ListenSocket.Accept(m_SendSocket);//其中m_SendSocket是和请求连接通信的
m_SendSocket.GetSockName(tempIP,tempPort);//执行后tempPort的值是6000
那么m_SendSocket应该是新的Socket,怎么会和监听Socket一个端口呢?
监听和数据传送都是6000?
那么假设有两个客户ClientA,ClientB,两个在服务器端负责与其通信的Socket是ServerA,ServerB
但ClientA想给ClientB发消息,那么ClientA先发送到ServerA,当ServerA接受到数据时,怎么送到ClientB呢,是ServerA直接发送数据到ServerB呢,还是直接到ClientB?
对于监听状态的socket, 每个TCP|UDP端口只能有一个。
对于连接状态的socket,每个TCP端口可以有N个,但是每个
【本端地址:端口——对端地址:端口】这样的地址对却只能有一个,
因为系统底层是根据它来区分socket数据的。
我用GetNameSocket得到的是和监听端口一样?
但是我想应该是一个新的端口!
谁给我一个明确的回答,谢谢!