为什么我的socket套接字老是创建失败?
以下是我的源程序,一个简单的服务器端程序,
可最后结果老是显示“socket error!”
请各位大虾帮忙解答!
#include <winsock.h>
#include <stdio.h>
#define USERPORT 12000
void main(void)
{
int sock;
struct sockaddr_in server, client;
int msgsock;
char buf[1024];
int rval, len;
/* 建立套接字 */
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVALID_SOCKET)
{
printf("socket error!\n");
exit(1);
}
server.sin_family = AF_INET;
server.sin_port = htons(USERPORT);
server.sin_addr.s_addr = INADDR_ANY;
if (bind(sock, (struct sockaddr *)&server, sizeof(server)) < 0)
{
printf("bind error!\n");
exit(1);
}
/* 开始接收连接 */
listen(sock, 5);
len = sizeof(struct sockaddr);
do
{
msgsock = accept(sock, (struct sockaddr *)&client, (int *)&len);
if (msgsock == -1)
printf("accept error!\n");
else do
{
memset(buf, 0, sizeof(buf));
if ((rval = recv(msgsock, buf, 1024, 0)) < 0)
printf("receive error!\n");
if (rval == 0)
printf("ending connection \n");
else
printf("%s\n", buf);
}while (rval != 0);
closesocket(msgsock);
} while (1);
exit(0);
}