主题:一个困扰我的VC简单通信程序
我写了一个简单的C/S的通信程序!!我用的是路由器!!!
下面是客户端的一段代码
//获取主机的信息
LPHOSTENT hostEntry;
char hostname[MAX_NUM_BUF];
gethostname(hostname,MAX_NUM_BUF); //获取主机名称
hostEntry = gethostbyname(hostname); //获取主机信息
//设置sockaddr_in
SOCKADDR_IN addrServ;
addrServ.sin_family = AF_INET;
addrServ.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list); --这个地址的问题!!
addrServ.sin_port = htons(5000);
问题就处在这里,要是我设置服务器的地址“127.0.0.1”, 连接正常,显示也正常!!!
但是我通过上面这种方法获取我的机器的网络地址的话,我的IP是:“192.168.1.6”,服务器那边上面可以显示客户端的IP地址和端口号
(打印Accept函数获得的客户端的信息),但是同时又会出错!!!
就在服务器端的recv函数中出现了错误代码:WSAECONNRESET,于是程序就出错退出了,后面发送的消息也显示不出来,不知道这是为什么???谢谢各位指教一下!!!
错误代码是:The virtual circuit was reset by the remote side executing a hard or abortive close. The application should close the socket as it is no longer usable. On a UPD-datagram socket this error would indicate that a previous send operation resulted in an ICMP "Port Unreachable" message.
下面是客户端的一段代码
//获取主机的信息
LPHOSTENT hostEntry;
char hostname[MAX_NUM_BUF];
gethostname(hostname,MAX_NUM_BUF); //获取主机名称
hostEntry = gethostbyname(hostname); //获取主机信息
//设置sockaddr_in
SOCKADDR_IN addrServ;
addrServ.sin_family = AF_INET;
addrServ.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list); --这个地址的问题!!
addrServ.sin_port = htons(5000);
问题就处在这里,要是我设置服务器的地址“127.0.0.1”, 连接正常,显示也正常!!!
但是我通过上面这种方法获取我的机器的网络地址的话,我的IP是:“192.168.1.6”,服务器那边上面可以显示客户端的IP地址和端口号
(打印Accept函数获得的客户端的信息),但是同时又会出错!!!
就在服务器端的recv函数中出现了错误代码:WSAECONNRESET,于是程序就出错退出了,后面发送的消息也显示不出来,不知道这是为什么???谢谢各位指教一下!!!
错误代码是:The virtual circuit was reset by the remote side executing a hard or abortive close. The application should close the socket as it is no longer usable. On a UPD-datagram socket this error would indicate that a previous send operation resulted in an ICMP "Port Unreachable" message.