新手求教Windows下Socket 编程的有关问题
新手求教Windows下Socket 编程的问题
我用C语言写了一个很简单的服务器程序,但是报错,总是绑定错误~以下是源代码~请大虾们帮我诊断一下是什么问题?用的VS2005~工程为win32控制台空项目~C语言编写~
#include <stdio.h>
#include <winsock.h>
#pragma comment (lib, "ws2_32.lib ")
#define SVR_PORT (unsigned short)3000
#define CLN_PORT (unsigned short)4000
main()
{
SOCKET dwSvrSock;
struct sockaddr_in tSvrAddr;
struct sockaddr_in tClnAddr;
unsigned int dwAddrLen = sizeof (struct sockaddr_in);
fd_set readfds;
WORD wVersionRequested;
WSADATA wsaData;
int rtn;
char recv[10];
wVersionRequested = MAKEWORD(1, 1);
rtn = WSAStartup(wVersionRequested, &wsaData);
if (rtn != 0)
{
printf ( "Socket startup error!\n ");
return;
}
if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)
{
printf ( "Socket Version error!\n ");
return;
}
dwSvrSock = socket(AF_INET, SOCK_DGRAM, 0);
if (dwSvrSock == INVALID_SOCKET)
{
printf ( "Socket fail!\n ");
return;
}
tSvrAddr.sin_family = AF_INET;
tSvrAddr.sin_port = htons (SVR_PORT);
tSvrAddr.sin_addr.s_addr = inet_addr( "127.0.0.1 ");
rtn = bind (dwSvrSock, (struct sockaddr *)&tSvrAddr, dwAddrLen);
if (rtn == 0)
{
printf ( "Bind fail!\n ");
closesocket(dwSvrSock);
return;
}
while(1)
{
FD_ZERO(&readfds);
FD_SET(dwSvrSock, &readfds);
rtn = select((int)dwSvrSock + 1, &readfds, NULL, NULL, NULL);
我用C语言写了一个很简单的服务器程序,但是报错,总是绑定错误~以下是源代码~请大虾们帮我诊断一下是什么问题?用的VS2005~工程为win32控制台空项目~C语言编写~
#include <stdio.h>
#include <winsock.h>
#pragma comment (lib, "ws2_32.lib ")
#define SVR_PORT (unsigned short)3000
#define CLN_PORT (unsigned short)4000
main()
{
SOCKET dwSvrSock;
struct sockaddr_in tSvrAddr;
struct sockaddr_in tClnAddr;
unsigned int dwAddrLen = sizeof (struct sockaddr_in);
fd_set readfds;
WORD wVersionRequested;
WSADATA wsaData;
int rtn;
char recv[10];
wVersionRequested = MAKEWORD(1, 1);
rtn = WSAStartup(wVersionRequested, &wsaData);
if (rtn != 0)
{
printf ( "Socket startup error!\n ");
return;
}
if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)
{
printf ( "Socket Version error!\n ");
return;
}
dwSvrSock = socket(AF_INET, SOCK_DGRAM, 0);
if (dwSvrSock == INVALID_SOCKET)
{
printf ( "Socket fail!\n ");
return;
}
tSvrAddr.sin_family = AF_INET;
tSvrAddr.sin_port = htons (SVR_PORT);
tSvrAddr.sin_addr.s_addr = inet_addr( "127.0.0.1 ");
rtn = bind (dwSvrSock, (struct sockaddr *)&tSvrAddr, dwAddrLen);
if (rtn == 0)
{
printf ( "Bind fail!\n ");
closesocket(dwSvrSock);
return;
}
while(1)
{
FD_ZERO(&readfds);
FD_SET(dwSvrSock, &readfds);
rtn = select((int)dwSvrSock + 1, &readfds, NULL, NULL, NULL);