Chinaunix首页 | 论坛 | 博客

tt

  • 博客访问: 9978
  • 博文数量: 18
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-13 15:06
文章分类

全部博文(18)

文章存档

2015年(18)

我的朋友

分类: 网络与安全

2015-10-04 22:40:44

#include <winsock.h>  
#include <stdio.h>   
#include <stdlib.h> 
#include <string.h>
#include <iostream>  
using namespace std;
#pragma comment(lib,"WS2_32.lib")    
#define   MAX_PENDING_CONNECTS   4  
  
//声明函数  
char *ip;
void tt(void);  
DWORD WINAPI HandleSocket(LPVOID lpParam);  
  
//程序入口点  
int main()  
{     
     tt();     
    return 0;  
}  


void tt(void)  
{  
     WORD wVersionRequested;  
     WSADATA wsaData;  
     int err;  
       
     //版本请求  
     wVersionRequested = MAKEWORD( 1, 1 );  
     //初始化WinSock(WSAStartup函数)  
     err = WSAStartup( wVersionRequested, &wsaData);  
     if ( err != 0 )   
     {  //初始化出错了退出函数  
        return;  
     }  
     //初始化成功!但版本不一致! 退出函数  
     if ( LOBYTE( wsaData.wVersion ) != 1 ||  
            HIBYTE( wsaData.wVersion ) != 1 ) {  
          WSACleanup( ); //清除Socket  
          return;        //退出函数  
     }  
   
     SOCKET sockfd=socket(AF_INET,SOCK_STREAM,0);  //使用TCP协议  


     SOCKADDR_IN addrfd;  
     addrfd.sin_addr.S_un.S_addr=inet_addr("192.168.0.107"); 
     addrfd.sin_family=AF_INET;  
     addrfd.sin_port=htons(6000);                 //端口6000  
 
     bind(sockfd,(SOCKADDR*)&addrfd,sizeof(SOCKADDR));  
  
     //监听端口开始  
     if(listen(sockfd,MAX_PENDING_CONNECTS)!=0)   
     {   
        printf("listen(sock)   failed:   %d\n ",::WSAGetLastError());   
        return;//ExitProcess(STATUS_FAILED);   
     }   
     printf("开始监听...\n");  
  
     while(true)  
     {  
sockaddr_in addrfd_new;
int length=sizeof(addrfd_new);
         SOCKET sockfd_new=accept(sockfd,(struct sockaddr*)&addrfd_new, &length);  
ip = inet_ntoa(addrfd_new.sin_addr);
         if(sockfd_new>=0)     
         {   
printf("have client connect!\n");
             //创建一个线程来处理socket请求threadHandle  
             DWORD id;    
             HANDLE  threadHandle = CreateThread(0, 0,(LPTHREAD_START_ROUTINE)HandleSocket,(LPVOID)sockfd_new,0, &id);   
         }  
         else  
         { //没有客户端接入  
             printf("没有客户端接入\n");  
         }  
         Sleep(200);  
     }  
     //关闭Socket变量sockfd和sockfd_new
closesocket(sockfd);
     //清除Socket  
     WSACleanup();  
}  
  
  
DWORD WINAPI HandleSocket(LPVOID lpParam)  

    SOCKET sockfd_new=(SOCKET)lpParam;  


    char recvBuf[100];  
char sendBuf[100];
    while(1)  
    {  
        recv(sockfd_new,recvBuf,100,0);  
cout<<ip<<"说:"<<endl;
        cout<<recvBuf<<endl;
cout<<"本机说:"<<endl;
cin>>sendBuf;
send(sockfd_new,sendBuf,100,0);
    }  
closesocket(sockfd_new);

阅读(138) | 评论(0) | 转发(0) |
0

上一篇:socket 客户端

下一篇:没有了

给主人留下些什么吧!~~