编写一个TCP 并发服务器程序,用于接收上题的客户程序发来的学号、姓名、年龄以及程序设计课的考试成绩等信息,收到信息后在屏幕上显示。注意,该服务器为允许多个客户同时接入的并发服务器,要求用多线程技术实现。
#include "iostream"
#include "winsock2.h"
#define PORT 65432
#pragma comment(lib,"ws2_32.lib")
using namespace std;
unsigned long _stdcall thrdFun(void *par);
typedef struct {
char name[11];
char stdNum[10];
unsigned short age;
int score;
} Student;
int main()
{
SOCKET newsock,sock_server;
struct sockaddr_in addr,client_addr;
DWORD ThreadID;
HANDLE hThread;
int addr_len = sizeof(struct sockaddr_in);
WSADATA wsaData;
WORD wVersionRequested=MAKEWORD(2,2);
if(WSAStartup(wVersionRequested,&wsaData)!=0)
{
cout<<"加载winsock.dll 失败!\n";
return 0;
}
if ((sock_server = socket(AF_INET,SOCK_STREAM,0))<0)
{
cout<<"创建套接字失败!\n";
WSACleanup();
return 0;
}
addr.sin_family =AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(sock_server,(LPSOCKADDR)&addr,sizeof(a