执行到accept()出错

来源:百度知道 编辑:UC知道 时间:2024/05/15 07:41:22
/*用vc 6.0编译server.c时会出现warning c4761,但还是能通过编译,client.c能顺利通过编译,用client.exe连接server.exe时总是出现accept failed(null),不能得到正确结果*/
//这是server.c,估计就是这出错了
#include <stdio.h>
#include <conio.h>
#include <winsock.h>
#define QUEUE_SIZE 1
void main()
{
WSADATA WSAData;
int ListenPort=9000;
size_t iAddrSize;
SOCKET Server,Client;
struct sockaddr_in sockServerAddr,sockClientAddr;
if(WSAStartup(0x0101,&WSAData))
{
printf("WSAStartup failed");
WSACleanup();
getch();
exit(0);
}
Server=socket(AF_INET,SOCK_STREAM,0);
sockServerAddr.sin_family=AF_INET;
sockServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);
sockServerAddr.sin_port=htons(ListenPort);
if(bind(Server,(SOCKADDR *)&sockServerAddr,sizeof(sockServerAddr))==SOCKET_ERROR)
{
printf("bind failed");
WSACleanup();
getch();
exit(0);
}
if(lis

你总应该先把出了什么错了解一下才好分析。一大堆程序谁愿意一行行去读啊?可是在语句
printf("accept failed:%s",WSAGetLastError());
中,应该用%d而不是%s来输出。得到错误号后,到头文件中去查一查对应的错误,也许你自己就搞定了。

用安全卫士360

端口号没有问题吧,如果别的程序用该端口,估计就会出错