亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? netsock.c

?? 一個tcp/ip協議棧,帶有PPP、IP、TCP、UDP等協議
?? C
字號:
/*****************************************************************************
* netsock.c - Network Sockets source file
*
* portions Copyright (c) 2001 by Cognizant Pty Ltd.
*
* The authors hereby grant permission to use, copy, modify, distribute,
* and license this software and its documentation for any purpose, provided
* that existing copyright notices are retained in all copies and that this
* notice and the following disclaimer are included verbatim in any 
* distributions. No written agreement, license, or royalty fee is required
* for any of the authorized uses.
*
* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
* IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************
* REVISION HISTORY (please don't use tabs!)
*
*(yyyy-mm-dd)
* 2001-05-12 Robert Dickenson <odin@pnc.com.au>, Cognizant Pty Ltd.
*            Original file.
*
*****************************************************************************
*/
#include <string.h>
#include "netconf.h"
#include "netaddrs.h"
#include "netbuf.h"
#include "netether.h"
#include "netarp.h"
#include "netsock.h"
#include "netos.h"

#include <stdio.h>
#include "netdebug.h"

////////////////////////////////////////////////////////////////////////////////

#define MAX_SOCKET 16

tcp_Socket allSocks[MAX_SOCKET];


////////////////////////////////////////////////////////////////////////////////

void socketInit(void)
{
    short i;

    memset(&allSocks, 0, sizeof(allSocks));
    for (i = 0; i < MAX_SOCKET; i++) {
        allSocks[i].state = 0;
    }
}

////////////////////////////////////////////////////////////////////////////////

SOCKET LookupSocket(short type, short protocol)
{
    short i;
    for (i = 0; i < MAX_SOCKET; i++) {
        if (allSocks[i].type == type) {
            if (allSocks[i].protocol == protocol) {
                if (allSocks[i].state != 0) {
                    return i;
                }
            }
        }
    }
    return -1;
}

////////////////////////////////////////////////////////////////////////////////

void SocketArpUpdate(FAR InternetAdress* pIP, FAR EthernetAdress* pEth)
{
    short i;
    TRACE("SocketArpUpdate(%p, %p) ****************************\n", pIP, pEth);
    for (i = 0; i < MAX_SOCKET; i++) {
        if (allSocks[i].state != 0) {
            if (CompareIP(pIP, &allSocks[i].hisIPAddr)) {
                TRACE("SocketArpUpdate(%p, %p) -  updating socket eth addrs\n", pIP, pEth);
                CopyEA(pEth, &allSocks[i].hisEthAddr);
            }
        }
    }
}

////////////////////////////////////////////////////////////////////////////////
/*
SOCKET LookupSocketByEthAdr(EthernetAdress ethAdr)
{
    short i;
    for (i = 0; i < MAX_SOCKET; i++) {
        if (allSocks[i].type == type) {
            if (allSocks[i].protocol == protocol) {
                if (allSocks[i].state != 0) {
                    return i;
                }
            }
        }
    }
    return -1;
}
 */
////////////////////////////////////////////////////////////////////////////////

SOCKET socket(long af, short type, short protocol)
{
    short i;
    for (i = 0; i < MAX_SOCKET; i++) {
        if (allSocks[i].state == 0) {
            allSocks[i].protocol = protocol;
//            allSocks[i].protocol = PUDP;
            allSocks[i].type = type;
            allSocks[i].af = af;
            allSocks[i].state = 1;
            return i;
        }
    }
    return -1;
}

////////////////////////////////////////////////////////////////////////////////

short setsockopt(SOCKET s, short level, short optname, const char FAR *optval, short optlen)
{
    TRACE("setsockopt(...)\n");
    if (level == SOL_SOCKET) {
        switch (optname) {
        case SO_RCVTIMEO:
            if (optlen == 4)      allSocks[s].timeout = *(long*)optval;
            else if (optlen == 2) allSocks[s].timeout = *(short*)optval;
            else {
                TRACE("setsockopt() unsupported SO_RCVTIMEO parameter length: %u\n", optlen);
                goto abort;
            }
            return 0;
        default:
            TRACE("setsockopt(%u) unknown socket optname specified.\n", s);
            break;
        }
    } else {
        TRACE("setsockopt(%u) unknown socket level specified.\n", s);
    }
abort:
    return SOCKET_ERROR ;
}

////////////////////////////////////////////////////////////////////////////////

//    struct sockaddr_in sin; 
//    sin.sin_addr.s_addr = inet_addr(addrs);
//    sin.sin_family = AF_INET; 
//    sin.sin_port = htons(port); 
//    if (connect(s, (struct sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR) { 

u_short nextSourcePort = 978;

//short connect(SOCKET s, const struct sockaddr FAR *name, short namelen)
short connect(SOCKET s, FAR const NetAddr* name, short namelen)
{
    TRACE("connect(...)\n");
    if (s >= 0 && s < MAX_SOCKET) {
//        if (name->na_len == sizeof(sockaddr_in)) {
        if (name->na_len == sizeof(NetAddr)) {

//            FAR const NetAddr* sin = (NetAddr*)name;
            FAR struct sockaddr_in* sin = (FAR struct sockaddr_in*)name;

            allSocks[s].state = 1;
//            CopyIP(&sin->sin_addr, &allSocks[s].hisIPAddr);
            CopyIP(&sin->ipAddr, &allSocks[s].hisIPAddr);
            allSocks[s].hisPort = sin->sin_port;
            allSocks[s].myPort = nextSourcePort++;



//            ArpRequest(&allSocks[s].hisIPAddr);
//short ArpRequest(FAR InternetAdress* pReqIP)


            return 0;
        }
    }
    return SOCKET_ERROR;
}

////////////////////////////////////////////////////////////////////////////////


//short sock_print(short handle, char* buf)
short send(SOCKET s, const char FAR *buf, short len, short flags)
{
    short retval = 0;

    TRACE("send(%s)\n", buf);
    if (len < 0) len = strlen(buf);
    if (s >= 0 && s < MAX_SOCKET) {
//        switch (allSocks[s].protocol) {
        switch (allSocks[s].type) {
        case SOCK_DGRAM:
//            retval = TxUdp(&allSocks[s], buf, len);
            break;
        case SOCK_STREAM:
//            retval = TxTcp(s, buf, len);
            break;
        default:
            break;
        }
    }
    return retval;
}

////////////////////////////////////////////////////////////////////////////////

//short sock_read(short handle, void* buffer, unsigned short count)
short recv(SOCKET s, char FAR *buf, short len, short flags)
{
//    TRACE("recv(%u, ....) - BLOCKING TILL QUIT\n", s);

    delay(250); // simulate return from hard coded socket timeout option
    return 0;
}

////////////////////////////////////////////////////////////////////////////////

short closesocket(SOCKET s)
{
    TRACE("closesocket()\n");
    if (s >= 0 && s < MAX_SOCKET) {
        allSocks[s].state = 0;
        return 0;
    }
    return SOCKET_ERROR;
}

////////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品sm在线观看| 国产精品久久久久一区二区三区| 日韩一区二区在线观看视频| 国产精品国产三级国产有无不卡 | 极品少妇一区二区三区精品视频 | 国产精品一二三四| 欧美性欧美巨大黑白大战| 26uuu欧美日本| 日韩影院在线观看| 色94色欧美sute亚洲线路一ni| 精品福利视频一区二区三区| 一级中文字幕一区二区| www.爱久久.com| 国产欧美精品区一区二区三区 | 国产欧美一区二区精品忘忧草| 亚洲综合久久av| 色婷婷亚洲婷婷| 中文字幕乱码亚洲精品一区| 国产美女在线观看一区| 555www色欧美视频| 亚洲精品视频一区| k8久久久一区二区三区| 日韩欧美亚洲国产精品字幕久久久| 一区二区三区鲁丝不卡| 国产东北露脸精品视频| 久久这里只精品最新地址| 亚洲一区二区av电影| 91久久久免费一区二区| 国产精品免费免费| 丁香激情综合国产| 精品国产伦理网| 亚洲欧美日本韩国| 欧美综合天天夜夜久久| 中文字幕亚洲一区二区av在线| 国产成人高清在线| 国产午夜亚洲精品不卡| 国产69精品久久久久777| 日韩视频在线你懂得| 麻豆精品久久精品色综合| 欧美亚洲动漫制服丝袜| 69精品人人人人| 天堂一区二区在线| 欧美日韩精品一区二区三区| 午夜久久电影网| 在线视频观看一区| 国产黄人亚洲片| 色综合天天狠狠| 色综合 综合色| 亚洲美女屁股眼交3| 在线影视一区二区三区| 亚洲一区中文在线| 91精品国产91久久综合桃花| 五月婷婷综合网| 精品奇米国产一区二区三区| 日韩中文字幕区一区有砖一区 | 国产视频一区在线观看| 97久久久精品综合88久久| 亚洲色图第一区| 欧美日韩在线播放| 天天色天天爱天天射综合| 69堂成人精品免费视频| 国产精品主播直播| 中文在线一区二区| 欧美日韩精品一区视频| 捆绑调教美女网站视频一区| 国产亚洲自拍一区| 成人av在线看| 亚洲人成网站在线| 精品福利在线导航| av资源网一区| 麻豆成人久久精品二区三区红| 日韩一区国产二区欧美三区| 国产成人av一区二区三区在线| 一区在线观看视频| 欧美私人免费视频| 久久99深爱久久99精品| 国产精品久久久久久福利一牛影视 | 在线观看日韩电影| 美腿丝袜亚洲色图| 国产精品久久久久影视| 91精品国产综合久久久久久漫画 | 成人成人成人在线视频| 日韩精品欧美精品| 国产欧美一区二区精品性色 | 国产揄拍国内精品对白| 国产精品嫩草99a| 欧美午夜精品一区二区三区| 免费不卡在线视频| 欧美精品一区视频| 色综合天天综合网天天狠天天 | 国产日韩一级二级三级| 欧美日韩在线电影| 成人黄色777网| 精品一区二区在线播放| 亚洲人一二三区| 国产精品福利av| 欧美成人官网二区| 欧美日韩你懂的| 北条麻妃一区二区三区| 国产一二精品视频| 天天操天天干天天综合网| 伊人婷婷欧美激情| 中文字幕av一区 二区| 日韩美女在线视频| 欧美日韩国产电影| 欧美日韩免费观看一区二区三区| 国产精品一品视频| 国产一区999| 久久99精品一区二区三区三区| 日本aⅴ精品一区二区三区| 亚洲欧美一区二区不卡| 一区二区三区精品久久久| 国产精品视频看| 26uuu另类欧美亚洲曰本| 7777精品伊人久久久大香线蕉完整版| 午夜日韩在线电影| 亚洲色图制服诱惑 | 国产成a人亚洲精品| 欧美96一区二区免费视频| 亚洲欧美国产高清| 国产精品伦理在线| 日本一区二区免费在线观看视频| 日韩精品一区二区三区四区视频| 欧美精品日韩一本| 欧美视频中文一区二区三区在线观看| 成人亚洲精品久久久久软件| 韩国女主播一区| 国产二区国产一区在线观看| 日本中文字幕一区二区视频| 亚洲成精国产精品女| 中文av一区特黄| 日本一区二区三区四区在线视频| 精品国一区二区三区| 精品国免费一区二区三区| 中文字幕av一区二区三区免费看| 国产午夜精品一区二区三区四区| 久久九九久久九九| 亚洲三级久久久| 久久精品在线观看| 欧美日韩在线播放三区四区| 国产精品自拍一区| 免费黄网站欧美| 精品欧美一区二区久久| 日本韩国精品在线| 夜夜嗨av一区二区三区网页| 久久久久久电影| 欧美一卡2卡3卡4卡| 色哟哟一区二区在线观看| 看电视剧不卡顿的网站| 一区二区三区四区蜜桃 | 日韩一卡二卡三卡| 欧美色欧美亚洲另类二区| 男男gaygay亚洲| 久久精品一级爱片| 中文字幕精品一区二区精品绿巨人| 欧美亚一区二区| 欧美一区二区成人| 在线观看91精品国产入口| 欧美亚洲自拍偷拍| 91香蕉视频mp4| 欧美日韩免费观看一区二区三区 | 日韩经典一区二区| 国产不卡免费视频| 欧美午夜一区二区三区免费大片| 国产精品亲子伦对白| 洋洋av久久久久久久一区| 欧美亚洲国产一卡| 日韩美女在线视频| 中文字幕精品三区| eeuss国产一区二区三区| 久久99国产精品久久99 | 成人小视频在线| 欧洲一区二区三区在线| 日韩一区二区三区三四区视频在线观看 | 激情文学综合插| 91小视频免费看| 日韩一区和二区| 精品国产凹凸成av人网站| 亚洲女同一区二区| 日本大胆欧美人术艺术动态 | 成人ar影院免费观看视频| 国产成人精品一区二| 欧美少妇xxx| 18成人在线视频| 亚洲电影视频在线| 奇米综合一区二区三区精品视频| 国产精品亚洲专一区二区三区| 欧美日韩aaaaa| 2欧美一区二区三区在线观看视频| 日本中文在线一区| 成人一级视频在线观看| 欧美一级xxx| 看电影不卡的网站| 久久综合九色欧美综合狠狠| 亚洲精品乱码久久久久久日本蜜臀| 亚洲一区二区视频在线| 成+人+亚洲+综合天堂| 亚洲男人的天堂在线aⅴ视频| 国产精品一区专区| 欧美亚洲国产一区二区三区|