Chinaunix首页 | 论坛 | 博客
  • 博客访问: 111682
  • 博文数量: 19
  • 博客积分: 1716
  • 博客等级: 上尉
  • 技术积分: 275
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-25 14:03
文章分类

全部博文(19)

文章存档

2011年(8)

2010年(11)

我的朋友

分类: LINUX

2011-03-18 15:21:47

服务器TCP模型

///< #include "..."

///< #include "..."

///< #include "..."

#define  SERVER_PORT

#define  MAX_LISTEN

int TCPServerModel (unsigned short publicPort)

{

    int sockListen;

    int sockAccept;

    sockaddr_in serverAddr;

    sockaddr_in clientAddr;

    pid_t childPid;

    int addrLen = sizeof(sockaddr_in);

    

    // XXX 初始化监听套接口

    sockListen  = socket (AF_INET, SOCK_STREAM, 0);

    // XXX 初始化sockaddr_in

    memset (&serverAddr, 0, addrLen);

    serverAddr.sin_family = AF_INET;

    serverAddr.sin_port = htons(publicPort);

    serverAddr.sin_addr.s_addr = htons(INADDR_ANY);

    // XXX 绑定 - bind()

    bind   (sockListen, (sockaddr *)&serverAddr, addrLen);

    // XXX 监听 - listen()

    listen (sockListen, MAX_LISTEN);

    while(true)

    {

        // XXX 接收连接 - accept()

        sockAccept = accept(sockListen, (sockaddr *)&clientAddr, &addrLen);

        if (!(childPid = fork()))

        {

            close(sockListen);

            // XXX 处理客户端数据

            exit(0);

        }

        close(sockAccept);

    }

}

客户端TCP模型

///< #include "..."

///< #include "..."

///< #include "..."

#define  SERVER_IP

#define  SERVER_PORT

#define  MAX_LISTEN

int TCPClientModel (unsigned long serverIP)

{

    int sockFd;

    sockaddr_in serverAddr;

    int addrLen = sizeof(serverAddr);

    // XXX 初始化套接口

    sockFd = socket (AF_INET, SOCK_STREAM, 0);

    // XXX 初始化sockaddr_in

    memset (&serverAddr, 0, addrLen);

    serverAddr.sin_family = AF_INET;

    serverAddr.sin_port = htons(SERVER_PORT);

    serverAddr.sin_addr.s_addr = htonl(serverIP);

    // XXX 连接 - connect()

    connect (sockFd, (sockaddr *)&serverAddr, addrLen);

    // XXX 处理服务器数据 可根据实际情况具体实现

    exit (0);

}

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

上一篇:Linux线程锁属性

下一篇:非阻塞IO_01概述

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