多线程时间服务器
2015-10-06 17:28
302 查看
// winsock.cpp : Defines the entry point for the console application. // #include "stdafx.h" #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; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- 黑马程序员----Objective-C学习笔记之NSString类的内存管理问题
- Web APi之认证(Authentication)及授权(Authorization)【一】(十二)
- 数组例题
- CSS选择器的阅读方式
- Implementing a simple smart pointer in C++
- 交换两个变量的值,不借助第三方变量 ---指针篇
- Add Two Numbers
- ubuntu15.04手动安装MySQL5.6.27数据库
- hdu 5113(2014北京—搜索+剪枝)
- c++primer plus第十七章-输入和输出概述
- hdu 5113(2014北京—搜索+剪枝)
- 黑马程序员——OC语言基础---description方法介绍及重写
- 【整理】Android-Recovery Mode(recover模式详解)
- Oracle查询转换之视图合并
- ThreadPoolExecutor
- [译] --- GPUImage README.md
- 四校联训Round4心得体会
- Java面向对象(一)
- go语言 匿名变量
- 关于使用 Connect-Busboy 实现文件上传 优化说明