原始套接字(服务器端)

 

服务器端线程处理函数(简单的只支持单client) :

 

UINT ServerFunc( LPVOID pParam );

CWinApp theApp;

using   namespace  std;

int  _tmain( int  argc, TCHAR *  argv[], TCHAR *  envp[])
{
    
int nRetCode = 0;

    cout
<<"Hello, Welcome to socket"<<endl;

    AfxBeginThread(ServerFunc,
0,0);

    
while(_getch()!=27);
    
return nRetCode;
}


UINT ServerFunc( LPVOID pParam )
{
    cout
<<"Here is Thread"<<endl;

    
//WSAStartup
    WSADATA wsaData;
    
int ret = WSAStartup(0x101,&wsaData);
    
if(ret!=0)
    
{
        
return 1;
    }


    
//socket
    SOCKET server = socket(AF_INET,SOCK_STREAM,0);
    
if(server==INVALID_SOCKET)
    
{
        
return 1;
    }


    
//bind
    struct sockaddr_in server_addr;
    server_addr.sin_family 
= AF_INET;
    server_addr.sin_port 
= htons((u_short)20248);
    server_addr.sin_addr.s_addr 
= INADDR_ANY;
    ret 
= bind(server,(sockaddr*)&server_addr,sizeof(server_addr));
    
if(ret!=0)
    
{
        
return 1;
    }


    
//listen
    ret = listen(server,10);
    
if(ret!=0)
    
{
        
return 1;
    }


    SOCKET client;
    
struct sockaddr_in client_addr;
    
int client_len = sizeof(client_addr);//这个参数一定要有初值,否则在调用accept时会出错
    
    
while(TRUE)
    
{
        
char temp[512];
        
//accept
        client = accept(server,(sockaddr*)&client_addr,&client_len);
        sprintf(temp,
"Connect from %s",inet_ntoa(client_addr.sin_addr));
        cout
<<temp<<endl;
        sprintf(temp,
"You IP Addr is %s",inet_ntoa(client_addr.sin_addr));
        send(client,temp,strlen(temp),
0);
        closesocket(client);
    }

    closesocket(server);

    WSACleanup();

    
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值