回 帖 发 新 帖 刷新版面

主题:一个困扰我的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.

回复列表 (共1个回复)

沙发

recv 函数中的socket是你accept得到的返回值吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册