Time Server

Tody Guo 2010-05-31 05:05:37

#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <windows.h>
#include <winsock.h>

#define PORT 8080
int x = 1;

void error(char *str)
{
fprintf(stderr,"%s Error\n",str);
exit(1);
}

DWORD WINAPI new_client_proc(LPVOID lpParam)
{
SOCKET s = (SOCKET)(lpParam);
char p[1024] = "Hi,\n My Client, I'm thread,\n Welcome you";
SYSTEMTIME t;
GetSystemTime(&t);

sprintf(p,"%4d-%02d-%02d %02d:%02d:%02d.%d", t.wYear, t.wMonth,t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

while( 1 )
{

if (x == 1){
x = 0;
if(send(s, p, strlen(p), 0) == -1 )
{
error("send()");
}
printf("Send ok");
break;
}
Sleep(1);

}
x = 1;
close(s);
return 0;
}


int main(int argc, char* argv[])
{
WSADATA WsaData;
SOCKET sfd = 0;
SOCKET nfd = 0;
int len = 0;
struct sockaddr_in server;
struct sockaddr_in client;

HANDLE hThread;
DWORD Tid;


if (WSAStartup(MAKEWORD(1,1),&WsaData) == -1)
{
error("WSAStartup()");
}

sfd = socket(AF_INET,SOCK_STREAM,0);
if (sfd == -1)
{
error("socket()");
}
memset(&server,0,sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.s_addr = htonl(INADDR_ANY);

if (bind(sfd,(struct sockaddr *) & server, sizeof(struct sockaddr)) == -1)
{
error("bind()");
}

listen(sfd,5);

printf("Now Server is running...\n");
while (1)
{
len = sizeof(struct sockaddr);
nfd = accept(sfd, (struct sockaddr *) &client, &len); //Waiting for Client connecting
printf("Client: %s:%d -> \r",inet_ntoa(client.sin_addr), client.sin_port);

hThread = CreateThread(NULL, 0, new_client_proc, (LPVOID)nfd, 0, &Tid);
if (hThread == NULL)
{
error("CreateThread()");
}
}

WSACleanup();
return 0;
}

...全文
97 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
z569362161 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hhbgk 的回复:]
什么问题呢?
[/Quote]

笨,这是观赏帖
时间一粒 2010-05-31
  • 打赏
  • 举报
回复
什么问题呢?

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧