现在的位置: 首页 > 综合 > 正文

視窗:網路-最簡示例(服務器端)

2013年03月22日 ⁄ 综合 ⁄ 共 1737字 ⁄ 字号 评论关闭

Windows服務器端最簡單的例子了,看看吧。

//在555端口上監聽,接受一個傳入的連接,然後退出程序。

////////////////////////服務器端///////////////////////

#include <windows.h>
#include <stdio.h>

#pragma comment (lib, "WS2_32.lib")

#define DEFAULT_PORT 555
#define DEFAULT_BUFFER 8

int main(void){
    //初始化
    WSADATA wsd;
    if(WSAStartup(MAKEWORD(2, 2), &wsd) != 0){
        printf("WSAStartup error!/n");
    return FALSE;
    }
    printf("WSAStartup初始化成功!/n");

    SOCKET sSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    if(sSocket == SOCKET_ERROR){
        printf("SOCKET ERROR!/n");
        return FALSE;
    }
    printf("socket初始化成功!/n");

    struct sockaddr_in local;
    local.sin_addr.s_addr = htonl(INADDR_ANY);
    local.sin_family = AF_INET;
    local.sin_port = htons(DEFAULT_PORT);

    //綁定
    if(bind(sSocket, (struct sockaddr *)&local, sizeof(local)) == SOCKET_ERROR){
        printf("綁定失敗!bind error!/n");
        return FALSE;
    }
    printf("綁定成功!/n");

    //監聽
    if(listen(sSocket, 10) == SOCKET_ERROR){
        printf("監聽失敗!listen error!/n");
        return FALSE;
    }
    printf("監聽成功!/n");
    printf("開始監聽.../n");

    int naddrlen = sizeof(sockaddr_in);

    //接受連接
    SOCKET sClient = accept(sSocket, (struct sockaddr *)&local, (int *)&naddrlen);
    if(sClient == SOCKET_ERROR){
        printf("接受連接失敗!accept error!/n");
        //printf("error = %d/n", WSAGetLastError());
    return FALSE;
    }
    printf("接受連接成功!/n");

    char cBuf[DEFAULT_BUFFER] = {'/0'};
    if(recv(sClient, cBuf, DEFAULT_BUFFER, 0) == SOCKET_ERROR){
        printf("接收數據失敗!recv error!/n");
        //printf("cBuf[] = %s/n", cBuf);
    return FALSE;
    }
    printf("接收數據成功!/n");

    printf("cBuf[] = %s/n", cBuf);
    printf("Press any key to exit .../n");
    getchar();

    //結束
    closesocket(sSocket);
    WSACleanup();
    printf("結束!/n");

    return TRUE;
}
/////////////////////////////eof//////////////////////////////////////

其客戶端程序參見“視窗:網路-(完成端口)-最簡示例(客戶端) ”。

抱歉!评论已关闭.