服务器端使用了多线程的方法,可用于对多个客户端的请求。
主线程:
创建套接字并将其绑定到服务器所使用的熟知地址上。
重复调用accept接收客户端的请求,并且创建子线程处理响应。子线程:
在线程创建时接收连接请求(例如,针对连接的套接字);
用该连接与客户端进行交互:接收请求并发回应答;
关闭连接并退出。子线程在处理完来自一个客户端的所有请求后退出。
// 时间同步服务器.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <WinSock2.h>
#pragma comment(lib,"wsock32.lib")
#define SERVER_PORT 6000
DWORD WINAPI sockThread(LPVOID lparam); //线程函数声明
struct sockaddr_in clientaddr; //获取客户端地址信息,供线程使用
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsaData;
SOCKET slisten,sserver;//监听套接字、连接套接字
int ret = WSAStartup(MAKEWORD(2,2),&wsaData);
if(ret!=0)
{
printf("WSAStartup() failed with error :%d!\n",ret);
return 1;
}
//创建监听套接字
slisten = socket(AF_INET,SOCK_