#include <stdio.h>
#include <WinSock2.h>
#include <ws2tcpip.h>
typedef struct _po
{
int socket;
char port_flag[3];
char reserve[1];
int port;
char port_reserve[4];
int des;
char des_ip[32];
}kkkkkk;
#pragma pack(1)
typedef struct _login
{
int port;
char username[8];
char password[5];
}Login;
#pragma
int Port;
unsigned __stdcall test(void *param)
{
SOCKET tmp;
kkkkkk *s1=NULL;
Login *lgi=NULL;
int length=0;
s1=(kkkkkk *)malloc(sizeof(kkkkkk));
if (s1==NULL){
printf("malloc failed %d\r\n",__LINE__);
return -1;
}
lgi=(Login *)malloc(sizeof(Login));
if(lgi==NULL){
printf("malloc failed %d\r\n",__LINE__);
return -1;
}
memset(s1,'\0',sizeof(kkkkkk));
memset(lgi,'\0',sizeof(Login));
tmp=(SOCKET)param;
strcpy(lgi->username,"tset");
strcpy(lgi->password,"pass");
send(tmp,lgi,sizeof(Login),0);
}
int main()
{
WSADATA wsaData;
SOCKET listener;
SOCKET client;
SOCKADDR_IN address;
int returned;
SOCKADDR_IN from;
int iResult;
int len;
kkkkkk *ss=NULL;
int port=0;
HANDLE status;
ss=(kkkkkk *)malloc(sizeof(kkkkkk));
if(ss==NULL){
printf("malloc failed\r\n");
return -1;
}
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != 0)
{
printf("WSAStartup failed: %d\n", iResult);
return 1;
}
listener=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(listener!=INVALID_SOCKET)
{
address.sin_family=AF_INET;
address.sin_port=htons(8888);
address.sin_addr.S_un.S_addr=htonl(ADDR_ANY);
returned=bind(listener,(SOCKADDR*)&address,sizeof(address));
if (returned!=SOCKET_ERROR)
{
listen(listener,100);
while(TRUE)
{
len=sizeof(from);
client=accept(listener,(SOCKADDR*)&from,&len);
if(client!=INVALID_SOCKET){
memset(ss,'\0',sizeof(kkkkkk));
if (recv(client,ss,sizeof(kkkkkk),0)<=0){
closesocket(client);
continue;
}
if (strcmp(ss->port_flag,"kl")==0){
printf("bb");
port=ss->port;
}
switch(port){
case 1:
printf("1\r\n");
status=(HANDLE)_beginthreadex(NULL,0,test,(LPVOID)client,0,NULL);
if (0==status){
printf("Error in BkPassiveListenerProc!\r\n");
}
CloseHandle(status);
break;
}
}
}
}
}
}