我有一个,不过是入门阶段的,我自己编的,不好,仅供参考!

解决方案 »

  1.   

    // test_svr.cpp : Defines the entry point for the console application.
    //
    #define WIN32_LEAN_AND_MEAN
    #include "io.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <fstream.h>
    #include <iostream.h>
    #include <winsock2.h>
    #include <windows.h>
    const VERSION_MAJOR=1;
    const VERSION_MINOR=1;
    #define REQUEST 400
    #define REPLY 400
    #define UDP_SERV_PORT 7777
    #define TCP_SERV_PORT 8888
    #define TTCP_SERV_PORT 9999
    int main(int argc, char* argv[])
    {
    WSADATA WSData;
    char request[REQUEST],reply[REPLY];
    struct sockaddr_in server,client;
    int listenfd,clilen;
    SOCKET sockfd;
        if(WSAStartup(MAKEWORD(VERSION_MAJOR,VERSION_MINOR),&WSData))
    {
    printf("cannot find Winsock v%d.%d\n",VERSION_MAJOR,VERSION_MINOR);
            return (1); 
    }
    listenfd=socket(PF_INET,SOCK_STREAM,0);
    if(listenfd==INVALID_SOCKET)
    {
    printf("cannot open socket\n");
    return (1);
    }
    server.sin_family=AF_INET;
    server.sin_addr.s_addr=htonl(INADDR_ANY);
    server.sin_port=htons(TCP_SERV_PORT);
    if(bind(listenfd,(struct sockaddr *)&server,sizeof(server))<0)
    {
    perror("bind failed\n");
            return (1);
        }
    if(listen(listenfd,SOMAXCONN)<0)
    {
    printf("listen error\n");
    return (1);
    }
        for(;;)
    {
    clilen=sizeof(client);
    if((sockfd=accept(listenfd,(struct sockaddr *)&client,&clilen))<0)
    {
    printf("accept error\n");
    return(1);
    }
    printf("accept sucess\n");
    memset(request,0,REQUEST);
    if(recv(sockfd,request,REQUEST,NULL)<0)
    {
    printf("read error\n");
    return 0;
    }
    printf(request);
    printf("\n");
    strcpy(reply,"i love you too");
    if(send(sockfd,reply,REQUEST,NULL)<0)
    {
    printf("write error\n");
    return 0;
    }
    close(sockfd);
         }
        close(listenfd);
    return 0;
        
    }