|
|
#include "Stdio.h"
#include "winsock.h"
#include "stdlib.h"
void usage(char *name)
{
fprintf(stderr,"usgae:%s [port]\n",name);
}
int main(int argc, char *argv[])
{
SOCKET servsock,clisock;
struct sockaddr_in sa;
struct sockaddr_in cliaddr; //存放返回客户地址信息
int len;
int err;
int servport = 5555; //默认服务端口
char buff[256]; //存放时间/日期信息缓冲区
SYSTEMTIME st;
WSADATA wsd;
//处理命令行参数
if(argc > 2)
{
usage(argv[0]);
return -1;
}
if(argc == 2)
{
servport = atoi(argv[1]);
if(servport > 65535 || servport < 1)
{
usage(argv[0]);
return -2;
}
}
//初始化 WINSOCK2.2
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
printf("WSAStartup() failed !\n");
return -3;
}
//创建套接字
printf("create Socket ...\n");
servsock = socket(AF_INET,SOCK_STREAM,0);
if(servsock == INVALID_SOCKET)
{
fprintf(stderr,"Socket() failed:%d\n",WSAGetLastError());
return -4;
}
printf("[OK]\n");
//填充服务器地址结构
memset(&sa,0,sizeof(sa));
sa.sin_family = AF_INET;
sa.sin_port = htons(servport);
sa.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
//绑定套接字到服务器地址结构
printf("bind ...\n");
err = bind(servsock,(const sockaddr *)&sa,sizeof(sa));
if(err != 0)
{
fprintf(stderr,"bind() failed: %d\n",WSAGetLastError());
return -5;
}
printf("[OK]\n");
//监听套接字
printf("listen ...\n");
err = listen(servsock,5);
if(err != 0)
{
fprintf(stderr,"listen() failed: &d\n",WSAGetLastError());
return -6;
}
//循环接受连接请求
while(1)
{
printf("wait request ...\n");
len = sizeof(cliaddr);
clisock = accept(servsock,(struct sockaddr *)&cliaddr,&len);
if(clisock == INVALID_SOCKET)
{
fprintf(stderr,"accept() failed; %d\n",WSAGetLastError());
closesocket(servsock);
return -7;
}
printf("accept client: %s:%d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
GetLocalTime(&st); //得到本地时间 日期
//返回给客户整理时间/日期信息格式
sprintf(buff,"YEAR : %u \nMONTH: %u \nDAY: %u \n HOUR: %u \n MINUTE: %u \nSECOND: %u \n",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
send(clisock,buff,strlen(buff),0); //发送给客户
closesocket(clisock); //关闭与客户端连接
printf("[server OK]\n");
}
closesocket(servsock);//关闭服务套接字
WSACleanup();//释放资源
return 0;
}
在link中 加入 wsock32.lib
编译 ...
VC6.0
--------------------Configuration: server - Win32 Debug--------------------
Linking...
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/server.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
server.exe - 2 error(s), 0 warning(s)
使用2003则通过 顺利编译
谁能知道配置那里出错么... 纳闷死了 这个实例本来就是6.0的... [em7] [em7] |
|