VC服务器端代码:
C/C++ code
//设定地址
m_socketAddr.sin_addr.s_addr=htonl(INADDR_ANY);//IP地址
m_socketAddr.sin_family=AF_INET;//采样TCP/IP协议簇
m_socketAddr.sin_port=8001;//htons(8001);端口号
m_addLength=sizeof(m_socketAddr);//sockaddr_in结构体大小
//创建socket
//AF_INET(同PF_INET):采样TCP/IP协议簇
//SOCK_STREAM:流套接字类型;SOCK_DGRAM:数据报套接字
//最后一个是通讯协议,可以不指定,设置为0.
m_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//绑定
if (bind(m_socket,(sockaddr*)&m_socketAddr,m_addLength))
{
GetDlgItem(IDC_STATIC_INFO)->SetWindowText("绑定失败!");
return;
}
else
{
//m_list.InsertItem(count++,inet_ntoa(serv.sin_addr));
GetDlgItem(IDC_STATIC_INFO)->SetWindowText("服务器创建成功!");
GetDlgItem(IDC_BTN_RUN)->EnableWindow(false);
GetDlgItem(IDC_BTN_SEND)->EnableWindow(true);
GetDlgItem(IDC_BTN_STOP)->EnableWindow(true);
//开始侦听
//第二个参数请求队列的最大数量
listen(m_socket,5);
//调用线程
m_threadStopFlag=true;
AfxBeginThread(StartServerThread, this);
}C#客户端代码:C# code
IPAddress ip = IPAddress.Parse("192.168.1.91");
IPEndPoint ipe = new IPEndPoint(ip, 8001);
Socket m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
m_socket.Connect(ipe);当运行到m_socket.Connect(ipe);这句时就直接出现异常,说拒绝访问。但是我使用C#写了一个服务器端,C#客户端可以正常连接。
后来我又用VC写了一个客户端,也能正常连接VC服务器端。
最后我让C#的服务器端和VC的服务器端同时运行,采样的IP和端口都是一样的,居然能正常运行。而且各自的客户端也能正常发送消息。是不是我写的C#客户端网络协议与VC服务器端网络协议不一致造成的?请大家帮助一下。
C/C++ code
//设定地址
m_socketAddr.sin_addr.s_addr=htonl(INADDR_ANY);//IP地址
m_socketAddr.sin_family=AF_INET;//采样TCP/IP协议簇
m_socketAddr.sin_port=8001;//htons(8001);端口号
m_addLength=sizeof(m_socketAddr);//sockaddr_in结构体大小
//创建socket
//AF_INET(同PF_INET):采样TCP/IP协议簇
//SOCK_STREAM:流套接字类型;SOCK_DGRAM:数据报套接字
//最后一个是通讯协议,可以不指定,设置为0.
m_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//绑定
if (bind(m_socket,(sockaddr*)&m_socketAddr,m_addLength))
{
GetDlgItem(IDC_STATIC_INFO)->SetWindowText("绑定失败!");
return;
}
else
{
//m_list.InsertItem(count++,inet_ntoa(serv.sin_addr));
GetDlgItem(IDC_STATIC_INFO)->SetWindowText("服务器创建成功!");
GetDlgItem(IDC_BTN_RUN)->EnableWindow(false);
GetDlgItem(IDC_BTN_SEND)->EnableWindow(true);
GetDlgItem(IDC_BTN_STOP)->EnableWindow(true);
//开始侦听
//第二个参数请求队列的最大数量
listen(m_socket,5);
//调用线程
m_threadStopFlag=true;
AfxBeginThread(StartServerThread, this);
}C#客户端代码:C# code
IPAddress ip = IPAddress.Parse("192.168.1.91");
IPEndPoint ipe = new IPEndPoint(ip, 8001);
Socket m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
m_socket.Connect(ipe);当运行到m_socket.Connect(ipe);这句时就直接出现异常,说拒绝访问。但是我使用C#写了一个服务器端,C#客户端可以正常连接。
后来我又用VC写了一个客户端,也能正常连接VC服务器端。
最后我让C#的服务器端和VC的服务器端同时运行,采样的IP和端口都是一样的,居然能正常运行。而且各自的客户端也能正常发送消息。是不是我写的C#客户端网络协议与VC服务器端网络协议不一致造成的?请大家帮助一下。
解决方案 »
- 对话框添加图片背景后,不能往编辑框中拖动文件
- 函数返回结构引用的转换?
- CListCtl中的滚动条一直没有显示
- debug版本有调试错误,release版本可以正常使用吗?
- 编译无错:运行时却出现一大堆symbols for 'C:\WINNT\system32\MFCO42D.DLL'错
- 请教一个ListBox控件的问题
- sos!急,在线等,高手请进
- directshow如何实现单帧前进和单帧后退?
- 散分交友,希望认识会数据挖掘的朋友!
- 为什么closesocket不能断开一个socket的tcp连接阿
- XP下的叫"我的电脑",WIN7下叫"计算机",我用程序如何获得这些系统文字?
- 使用GDI+绘制对话框png背景
为什么把后面的注掉??????
改为:m_socketAddr.sin_port=htons(8001);就OK了!