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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? socket.c

?? 完整的TCP/IP源代碼,絕對好用
?? C
字號:

//************************************SOCKET.C**************************************
//
// 應(yīng)用層操作
//
// 1. 主動建立SOCKET,調(diào)用SOCKET_CREATE
// 2. 關(guān)閉SOCKET,調(diào)用SOCKET_DELETE
// 3. 讀SOCKET輸入緩沖區(qū),調(diào)用SOCKET_READ_INBUFFER
// 4. 寫SOCKET輸出緩沖區(qū),調(diào)用SOCKET_WRITE_OUTBUFFER
// 5. 創(chuàng)建監(jiān)聽某個(gè)端口的SOCKET,調(diào)用SOCKET_CREATE_LISTEN(unsigned int PORT_NUM)

// TCP層對SOCKET的操作
//
// 1. 關(guān)閉SOCKET(也就是來自遠(yuǎn)程PC的關(guān)閉命令) SOCKET_DELETE()
// 2. 向SOCKET的輸入緩沖寫入接收到的來自遠(yuǎn)程PC的數(shù)據(jù) SOCKET_WRITE_INBUFFER
// 3. 讀取SOCKET輸出緩沖區(qū)中的數(shù)據(jù)調(diào)用 SOCKET_READ_OUTBUFFER(unsigned char *dest_addr,len)
//    返回實(shí)際讀取的數(shù)據(jù)長度
// 
// SOCKET數(shù)據(jù)結(jié)構(gòu):參見TCP.c文件
// 
//

//***************************************************************************************************************

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "C:\wql\tcpipsocket\tcp.h"
#include "c:\wql\tcpipsocket\tcp.c"
#include "C:\wql\tcpipsocket\ip.c"
#include "C:\wql\tcpipsocket\arp.c"
#include "C:\wql\tcpipsocket\icmp.c"

extern UINT32 initial_sequence_nr;
extern CONNECTION xdata conxn[MAX_SOCKET_NUM];
//***************************************************
// 由上層應(yīng)用層調(diào)用
// 返回連接的號
// 如果沒有連接可用了,則返回的是NO_CONNECTION
//***************************************************
CONNECTION *SOCKET_CREATE(unsigned int dest_port,unsigned char *dest_ip,unsigned int local_port,unsigned char *outbuf)
{
  unsigned char nr;

  nr = find_leisure_connection();
  if (nr == NO_CONNECTION) return NULL;
  conxn[nr].outbuf = outbuf;
  //conxn[nr].outbuf_len = outbuf_len; //這里應(yīng)該是緩沖區(qū)的總長度,而不是數(shù)據(jù)長度
  conxn[nr].outbuf_len = 0;

  conxn[nr].port = dest_port;
  conxn[nr].local_port = local_port;
  conxn[nr].ipaddr[0] = *dest_ip;
  conxn[nr].ipaddr[1] = *(dest_ip+1);
  conxn[nr].ipaddr[2] = *(dest_ip+2);
  conxn[nr].ipaddr[3] = *(dest_ip+3);
  conxn[nr].local_window = max_socket_in_len; //最大接收緩存區(qū)
  conxn[nr].my_sequence = initial_sequence_nr;
  initial_sequence_nr += 64000;
  conxn[nr].flags = FLG_SYN;       //這里將標(biāo)志置為SYN,則在TCP_TICK中將發(fā)送連接請求
  //tcp_send(FLG_SYN,28,nr);                   //發(fā)動了TCP連接
  conxn[nr].state   = STATE_ACT_SYN_SENT;
  conxn[nr].timer   = TCP_TIMEOUT;                     //2 second
  conxn[nr].inactivity   = INACTIVITY_TIME;
  return &conxn[nr];
}
//*******************************************
void SOCKET_DELETE(CONNECTION *CN)
{
  CN -> flags = FLG_FIN; //這里只發(fā)送FIN標(biāo)志,真正的關(guān)閉是在TCP,TCP_TICK在發(fā)送完FIN后要將連接的狀態(tài)置為STATE_FIN_WAIT_1
  //conxn[nr].state = STATE_FIN_WAIT_1;

}
//*******************************************
void SOCKET_RESET(unsigned char nr)
{
  conxn[nr].flags = FLG_RST; //這里只發(fā)送RST標(biāo)志,TCP_TICK在發(fā)送完RST后要將連接的狀態(tài)置為STATE_CLOSED
}

//**********************************************************************************************************
// 這是由應(yīng)用層調(diào)用的,它讓一個(gè)空閑的連接等待遠(yuǎn)程PC的連接,
// 當(dāng)TCP有被動連接請求時(shí),首先要看有無連接在LISTEN這個(gè)端口
// 如果沒有正在LISTEN的連接則說明此請求是無效的。
//
// 找一個(gè)空閑連接,在此等待特定端口的連接建立
// 
CONNECTION * SOCKET_CREATE_LISTEN(unsigned int PORT_NUM,unsigned char *outbuf)
{
  unsigned char nr;

  nr = find_leisure_connection();
  if (nr == NO_CONNECTION) return NULL;
  conxn[nr].local_port = PORT_NUM;   //在這個(gè)端口等,例如:HTTP 80
  conxn[nr].local_window = max_socket_in_len; //最大接收緩存區(qū)
  conxn[nr].state   = STATE_LISTEN;
  conxn[nr].timer = TCP_TIMEOUT;
  conxn[nr].inactivity = INACTIVITY_TIME;
  conxn[nr].outbuf = outbuf;
  conxn[nr].outbuf_len = 0;
  return &conxn[nr];
}
//***************************************************************
// 上層應(yīng)用程序每隔一段時(shí)間檢查一下連接,看有無數(shù)據(jù)過來,如果有
// 則將其放入指定的區(qū)域。
// 返回:本次讀取到的數(shù)據(jù)的長度

unsigned int SOCKET_READ_INBUFFER(CONNECTION *CN, unsigned char *buf)
{
  unsigned int i;
  i=0;
  if(CN->local_window==0) //滿了
  {
    for(i=0;i<256;i++)
    {
      *(buf+i) = CN->inbuf[CN->inbuf_head];	//全部讀到上層指定的內(nèi)存中去
	  CN->inbuf_head++;
	  CN->inbuf_head &= max_mm;
    }
  }
  else
  {
    while(CN->inbuf_head != CN->inbuf_tail)
    {
      *(buf+i) = CN->inbuf[CN->inbuf_head];	//全部讀到上層指定的內(nèi)存中去
	  i++;
	  CN->inbuf_head++;
	  CN->inbuf_head &= max_mm;
    }
 
  }
//  CN->flags &= ~FLG_WIN_ZERO;//清掉窗口為0的標(biāo)志
  CN->local_window = max_socket_in_len; //恢復(fù)窗口的最大尺寸。

  return i;
}

//***************************************************************
//
// 向SOCKET寫入數(shù)據(jù),在TCP_TICK中不停掃描,如果發(fā)現(xiàn)數(shù)據(jù)長度不是0,則發(fā)送出去。
// CN -socket 
// from -- source addr
// len  -- data length
//
// return 1=error(失敗) 0 = normal(成功)
//***************************************************************

unsigned char SOCKET_WRITE_OUTBUFFER(CONNECTION *CN,unsigned char *from,unsigned int len )
{
  if(CN->state != STATE_ESTABLISHED) return 1;
  if(CN->outbuf_len != 0) return 1;  //還沒有傳送完成 ,說明接收的太快,無法轉(zhuǎn)送出去

  memcpy(CN->outbuf,from,len);
  CN->offset = 0;
  CN->outbuf_len = len; //當(dāng)TCP傳完后將outbuf_len清零
  CN->flags = FLG_PSH;  //送數(shù)據(jù)

  if(CN->local_window != 0)
     CN->flags &= ~FLG_WIN_ZERO;//清掉窗口為0的標(biāo)志

  return 0;

}

//***************************************************************
// 看寫到SOCKET去的數(shù)據(jù)是否已經(jīng)被對方收到,也就是收到了對方的ACK
// 0 表示已經(jīng)收到了 1表示沒有收到 2表示連接沒有建立 
unsigned char SOCKET_WRITE_END(CONNECTION *CN)
{
  if(CN->state != STATE_ESTABLISHED) return 2;
  if(CN->outbuf_len != 0) return 1;  //還沒有傳送完成 

  if(CN->his_ack == CN->my_sequence) return 0;
  return 1;
}
//***************************************************************
// 設(shè)置窗口大小
void SOCKET_SET_WIN(CONNECTION *CN,unsigned int size)
{
  CN->local_window = size;
}
//檢查連接的輸出緩沖區(qū)數(shù)據(jù)的長度
unsigned int SOCKET_GET_O_L(CONNECTION *CN)
{
  return CN->outbuf_len; //輸出緩沖區(qū)數(shù)據(jù)的長度
}
//查看連接的輸入緩沖區(qū)數(shù)據(jù)的長度
unsigned int SOCKET_GET_IN_L(CONNECTION *CN)
{
  if(CN->inbuf_head != CN->inbuf_tail) return 1;
  if(CN->local_window ==0) return 1; //緩沖區(qū)滿了
  return 0; //輸出緩沖區(qū)數(shù)據(jù)的長度
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
大白屁股一区二区视频| 日韩和欧美一区二区三区| 国内精品免费**视频| 欧美电视剧在线看免费| 日本va欧美va精品| 欧美一区二区视频在线观看| 日韩国产欧美在线观看| 91精品国产一区二区人妖| 青娱乐精品在线视频| 精品久久久久香蕉网| 国产乱码精品一区二区三区av| 精品国产免费一区二区三区四区| 久久av老司机精品网站导航| 精品国产精品一区二区夜夜嗨| 黄网站免费久久| 国产日本一区二区| 99天天综合性| 天堂久久一区二区三区| 精品久久久久久久久久久久久久久 | 97精品久久久久中文字幕 | 亚洲美女淫视频| 欧美亚洲国产bt| 蜜桃传媒麻豆第一区在线观看| 欧美一区二区日韩| 国产精品1024久久| 亚洲女同一区二区| 日韩欧美123| 成人91在线观看| 婷婷久久综合九色综合伊人色| 精品久久久久一区| 色婷婷av一区| 寂寞少妇一区二区三区| 亚洲欧洲精品一区二区三区| 欧美日韩的一区二区| 午夜欧美2019年伦理| 日本一区二区三级电影在线观看| 色国产综合视频| 久久精品免费观看| 一区精品在线播放| 精品国产免费一区二区三区四区| 91美女在线看| 国产成人自拍高清视频在线免费播放| 一区二区三区国产精品| 久久亚洲综合色| 欧美精品1区2区3区| 99精品视频在线观看免费| 日本欧美一区二区三区乱码| 日韩美女啊v在线免费观看| 日韩三级av在线播放| 91黄色小视频| 成人深夜视频在线观看| 美女视频一区二区| 亚洲精品少妇30p| 亚洲国产激情av| 精品少妇一区二区三区| 欧美卡1卡2卡| 91网站最新地址| 国产成人鲁色资源国产91色综 | 性欧美疯狂xxxxbbbb| 国产精品色噜噜| 久久久久国产免费免费 | 精品国产一区二区国模嫣然| 欧美日韩午夜影院| 色噜噜狠狠成人网p站| 国产成+人+日韩+欧美+亚洲| 免费看日韩a级影片| 亚洲h动漫在线| 1区2区3区精品视频| 精品播放一区二区| 欧美一区二区三区视频| 欧美日韩极品在线观看一区| 欧美在线一区二区三区| 色综合久久中文字幕综合网| av一区二区不卡| 成人国产视频在线观看| 成人国产精品免费观看| 成人精品视频一区二区三区尤物| 国产剧情在线观看一区二区| 国产综合一区二区| 国产一区二区三区四| 国产精品亚洲一区二区三区妖精 | 欧美日韩综合一区| 欧美日韩在线播放| 欧美在线播放高清精品| 91网页版在线| 国产成人夜色高潮福利影视| 国产盗摄精品一区二区三区在线| 免费成人小视频| 五月婷婷色综合| 一区二区三区不卡视频在线观看| 精品日韩一区二区| 久久久午夜电影| 欧美sm极限捆绑bd| 日韩精品一区二区三区在线观看| 欧美日本在线一区| 欧美三级视频在线播放| 91麻豆精品在线观看| 国产很黄免费观看久久| 国产美女一区二区三区| 精品一区二区三区免费| 日本91福利区| 免费观看91视频大全| 免费在线视频一区| 秋霞电影网一区二区| 五月婷婷综合在线| 国产在线不卡视频| 国产精品一区不卡| 丁香另类激情小说| 成人成人成人在线视频| 成人理论电影网| 99精品视频中文字幕| 日本黄色一区二区| 欧美午夜精品一区| 制服丝袜日韩国产| 5月丁香婷婷综合| 国产欧美视频在线观看| 中文无字幕一区二区三区| 国产欧美1区2区3区| 国产精品毛片久久久久久| 中文字幕日韩av资源站| 一区二区三区中文在线观看| 亚洲一区二区三区影院| 亚洲18女电影在线观看| 老色鬼精品视频在线观看播放| 国产一区美女在线| 成人精品免费看| 在线观看一区日韩| 欧美日韩免费在线视频| 国产欧美视频一区二区三区| 亚洲人成影院在线观看| 亚洲成在线观看| 久久99精品国产麻豆婷婷| 丁香天五香天堂综合| 色国产精品一区在线观看| 欧美性一二三区| 欧美国产国产综合| 亚洲一区在线免费观看| 裸体健美xxxx欧美裸体表演| 国产成人av一区二区| 色域天天综合网| 日韩欧美二区三区| 午夜欧美大尺度福利影院在线看| 国内外成人在线视频| 色婷婷综合激情| 欧美大片免费久久精品三p| 欧美国产精品专区| 丝袜美腿亚洲一区| 91豆麻精品91久久久久久| 精品国产精品一区二区夜夜嗨| 亚洲色图在线播放| 精品在线视频一区| 欧洲精品一区二区三区在线观看| 欧美一区二区三区爱爱| 亚洲成人一区二区在线观看| 国产精品18久久久久久久久久久久| 91久久精品网| 久久精品一区八戒影视| 性做久久久久久久久| 99精品视频中文字幕| 国产精品短视频| 国产在线麻豆精品观看| 欧美日韩激情在线| 亚洲日本在线天堂| 国产一二精品视频| 91久久精品日日躁夜夜躁欧美| 国产精品久久夜| 国产一区福利在线| 欧美另类videos死尸| 日韩一区在线看| 国产一区二区调教| 欧美一级日韩免费不卡| 成人欧美一区二区三区白人| 韩国三级中文字幕hd久久精品| 欧美三级三级三级| 一区二区成人在线视频| 99久久久无码国产精品| 亚洲国产精品ⅴa在线观看| 久久99精品久久久久婷婷| 欧美日本一道本| 亚洲成人免费观看| 成人一区二区三区| 国产精品天天摸av网| 国产精品一二三四区| ww亚洲ww在线观看国产| 毛片基地黄久久久久久天堂| 欧美日韩第一区日日骚| 亚洲va国产va欧美va观看| 欧美伊人精品成人久久综合97| 亚洲精品免费在线| 91视频精品在这里| 亚洲欧美偷拍另类a∨色屁股| 国产精品自拍网站| 国产精品拍天天在线| 国产成人在线免费| 日本一区二区免费在线观看视频| 久久99最新地址| 国产亚洲综合在线| 在线中文字幕一区| 亚洲综合一区在线| 欧美日本乱大交xxxxx|