帮我看一下这个多线程socket

来源:百度知道 编辑:UC知道 时间:2024/06/01 12:07:21
char buf[buffter_length];
DWORD WINAPI Thread2(LPVOID lpParameter)
{
SOCKET slisten1,saccept1;
int ilen;
int isend;

struct sockaddr_in ser1,cli1;

printf("--------------------------\n");
printf("server5051 waiting\n");
printf("--------------------------\n");

slisten1=socket(AF_INET,SOCK_STREAM,0);
if(slisten1==INVALID_SOCKET)
{
printf("socket()failed:%d",WSAGetLastError());
return 1;
}
ser1.sin_family=AF_INET;
ser1.sin_port=htons(default_port1);
ser1.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(slisten1,(LPSOCKADDR)&ser1,sizeof(ser1))==SOCKET_ERROR)
{
printf("bind() failed:%d\n",WSAGetLastError());
return 1;
}
if(listen(slisten1,5)==SOCKET_ERROR)
{
printf("listen() failed:%d\n",WSAGetLastError());
return 1;
}

printf("listen() failed:%d\n",WSAGetLastError());
return;
}

HANDLE hThread = CreateThread(NULL, 0, Thread2, NULL, 0, NULL);
CloseHandle(hThread);
ilen=sizeof(cli);
//进入一个无限循环,等待客户的连接请求
while(1)
{
saccept=accept(slisten,(struct sockaddr*)&cli,&ilen);
if(saccept==INVALID_SOCKET)
{
printf("accept() failed:%d\n",WSAGetLastError());
break;
}
printf("accepted client ip:[%s],port:[%d]\n",
inet_ntoa(cli.sin_addr),ntohs(cli.sin_port));
//给客户发送信息
fstream fsend;
fsend.open("ls.txt",ios::in);
while ( ! fsend.eof())
{
int i=0;
memset(buf,0,sizeof(buf));
while ( i<buffter_length&&(!fsend.eof() ) )
{
buf[i++]=fsend.get();
}
if ( i==buffter_length)
isend=send(saccept,buf,buffter_length,0);
else
{
isend=