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

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

?? 基本tcp套接口編程一.txt

?? 學(xué)習(xí)(編程技巧_編程知識(shí)_程序代碼),是學(xué)習(xí)編程不可多得的學(xué)習(xí)精驗(yàn)
?? TXT
字號(hào):
基本TCP套接口編程一
 

--------------------------------------------------------------------------------
 
第八軍團(tuán) 時(shí)間:2004-1-17 21:36:52 
   

概述
socket() --得到文件描述符!

bind() --我們?cè)谀膫€(gè)端口?

connect() --Hello!

listen() --有人給我打電話嗎?

accept() --"Thank you for calling port 3490."

send() 和 recv() --Talk to me, baby!

sendto() 和 recvfrom() --Talk to me, DGRAM-style

close() 和 shutdown() --滾開!

getpeername() --你是誰?

gethostname() --我是誰?

DNS --你說“白宮”,我說 "198.137.240.100"


--------------------------------------------------------------------------------

socket函數(shù)
功能:指定協(xié)議類型

定義: 
#include <sys/types.h>
#include <sys/socket.h>
int socket(int family, int type, int protocol);

返回值

出錯(cuò): -1 
成功: 套接口描述字 (socket file descriptor)(套接字)sockfd  

socket 函數(shù)指定了協(xié)議族(IPv4、IPv6或unix)和套接口類型(字節(jié)流、數(shù)據(jù)報(bào)或原

始套接口)。但并沒有指定本地協(xié)議地址或遠(yuǎn)程協(xié)議地址。

理解socket

socket使用 Unix 文件描述符 (file descriptor) 和其他程序通訊的方式。

Unix 程序在執(zhí)行任何形式的 I/O 的時(shí)候,程序是在讀或者寫一個(gè)文件描述符。

一個(gè)文件描述符只是一個(gè)和打開的文件相關(guān)聯(lián)的整數(shù)。

這個(gè)文件可能是一個(gè)網(wǎng)絡(luò)連接,F(xiàn)IFO,管道,終端,磁盤上的文件或者什么其他

的東西。Unix 中所有的東西是文件!因此,與 Internet 上別的程序通訊的時(shí)候,

要通過文件描述符。利用系統(tǒng)調(diào)用 socket()得到網(wǎng)絡(luò)通訊的文件描述符。他返回

套接口描述符 (socket descriptor),然后再通過他來調(diào)用 send() 和 recv()。

那么為什么不用一般的調(diào)用 read() 和 write() 來通過套接口通訊?

簡(jiǎn)單的答案是:可以使用一般的函數(shù)!

詳細(xì)的答案是:使用 send() 和 recv() 讓你更好的控制數(shù)據(jù)傳輸。


--------------------------------------------------------------------------------

connect 函數(shù)
功能:建立與TCP服務(wù)器的連接

定義: 

#include <sys/types.h>
#include <sys/socket.h>

int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);

//sockfd 是系統(tǒng)調(diào)用 socket() 返回的套接口文件描述符

serv_addr 是保存著目的地端口和 IP 地址的數(shù)據(jù)結(jié)構(gòu) struct sockaddr

//addrlen 設(shè)置為 sizeof(struct sockaddr)

connect 激發(fā) TCP的三路握手過程

服務(wù)器必須準(zhǔn)備好接受外來的連接。

這通過調(diào)用socket,bind和1isten函數(shù)來完成,稱為被動(dòng)打開(Passive open)

客戶通過調(diào)用connect進(jìn)行主動(dòng)打開(active opn)。

這引起客戶TCP發(fā)送一個(gè)SYN分節(jié)(表示同步),它告訴服務(wù)器客戶將在(待建立的)

連接中發(fā)送的數(shù)據(jù)的初始序列號(hào)。

服務(wù)器必須確認(rèn)客戶的SYN,同時(shí)自己也得發(fā)送一個(gè)SYN分節(jié),它含有服務(wù)器將在

同一連接中發(fā)送的數(shù)據(jù)的韌始序列號(hào)。服務(wù)器以單個(gè)分節(jié)向客戶發(fā)送SYN和對(duì)客戶

SYN的ACK。客戶必須確認(rèn)服務(wù)器的SYN。

connect 出錯(cuò)時(shí)的返回

出錯(cuò)原因 :未收到SYN的響應(yīng)(服務(wù)器超時(shí),75s)

返回值:ETIMEDOUT

用戶端輸出:Connection time out.
  
出錯(cuò)原因 :收到RST響應(yīng)(Hard error)SYN到達(dá)服務(wù)器,但該服務(wù)器的無此項(xiàng)端口服務(wù)

返回值:ECONNREFUSE

用戶端輸出:Connection refused

出錯(cuò)原因 :ICMP錯(cuò)誤:不可路由(soft error)(目的地不可達(dá))

返回值:EHOSTUNREACH

用戶端輸出:ENETUNREACH No route to host


--------------------------------------------------------------------------------

bind 函數(shù)
功能:給套接口分配一個(gè)本地協(xié)議地址

定義:

#include <sys/types.h>
#include <sys/socket.h>

int bind(int sockfd, const struct sockaddr *my_addr, int addrlen);

sockfd 是調(diào)用 socket 返回的文件描述符。

my_addr 是指向數(shù)據(jù)結(jié)構(gòu) struct sockaddr 的指針,保存地址(即端口和 IP 地址) 信息。

addrlen 設(shè)置為 sizeof(struct sockaddr)。

返回: 0—成功, -1---出錯(cuò)

讓內(nèi)核自動(dòng)處理地址ip和端口port

my_addr.sin_port = 0; /* choose an unused port at random */
my_addr.sin_addr.s_addr = INADDR_ANY; /* use my IP address */

bind( ) 自己選擇合適的端口:將0賦給 my_addr.sin_por。

自動(dòng)填上他所運(yùn)行的機(jī)器的 IP 地址:my_addr.sin_addr.s_addr 設(shè)置為 INADDR_ANY。



--------------------------------------------------------------------------------

listen 函數(shù)
功能:將未連接主動(dòng)套接口的轉(zhuǎn)換為被動(dòng)套接口,指示內(nèi)核接受對(duì)該套接口的連接請(qǐng)求.

CLOSED --? LISTEN

定義:

#include <sys/socket.h>

int listen(int sockfd, int backlog);

sockfd 是調(diào)用 socket() 返回的套接口文件描述符。

backlog 是在進(jìn)入隊(duì)列中允許的連接數(shù)目。

監(jiān)聽套接口的兩個(gè)隊(duì)列

未完成連接隊(duì)列(incompleted connection queue): SYN_RECV

已完成連接隊(duì)列(completed connection queue): ESTABLISHED

當(dāng)一個(gè)客戶的SYN到達(dá)時(shí),如兩隊(duì)列都滿的, TCP將忽略該分節(jié)且不發(fā)RST


--------------------------------------------------------------------------------

ACCEPT 函數(shù)
功能:在已完成隊(duì)列頭返回下一個(gè)已完成的連接

定義

#include <sys/socket.h>

int accept(int sockfd, struct sockaddr *cliaddr, int* addrlen);

調(diào)用成功時(shí)返回: 1. cliaddr: 客戶進(jìn)程的協(xié)議地址和地址大小 2. 新套接口描述字

(已連接套接口描述字) 

監(jiān)聽套接口描述字 listening socket descriptor

一個(gè)給定的服務(wù)器常常是只生成一個(gè)監(jiān)聽套接口, 且一直存在,直到該服務(wù)器關(guān)閉。

已連接套接口描述字connected socket descriptor

內(nèi)核為每個(gè)被接受的客戶連接創(chuàng)建了一個(gè)已連接套接口。當(dāng)服務(wù)器完成某客戶的服務(wù)時(shí),

關(guān)閉已連接套接口。

1024以下的端口:超級(jí)用戶使用


--------------------------------------------------------------------------------

fork 函數(shù)
功能:派生新進(jìn)程 create new process

定義:
#include <sys/unistd.h>

pid_t fork (void);

在子進(jìn)程中返回0,在父進(jìn)程中返回子進(jìn)程的進(jìn)程ID

出錯(cuò)時(shí)返回 –1,調(diào)用一次返回兩次

fork的典型應(yīng)用:

1.一個(gè)進(jìn)程可為自己創(chuàng)建一個(gè)拷貝。當(dāng)一個(gè)拷貝處理一個(gè)操作時(shí),其他的拷貝可以

執(zhí)行其他的任務(wù)。這是非常典型的網(wǎng)絡(luò)服務(wù)器。

2.一個(gè)進(jìn)程想執(zhí)行其他的程序,由于創(chuàng)建新進(jìn)程的唯一方法是調(diào)用fork,進(jìn)程首先

調(diào) 用fork來生成一個(gè)拷貝,然后其中一個(gè)拷貝(通常為子進(jìn)程)調(diào)用exec 來代替自己

去執(zhí)行新程序。
 
 
 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区免费视频| 日韩电影免费一区| 日韩视频在线永久播放| 成人激情免费电影网址| 免费成人在线观看| 一区二区三区国产精品| 久久综合色婷婷| 欧美三级视频在线| 波多野结衣欧美| 精品一区在线看| 婷婷国产在线综合| 亚洲视频狠狠干| 国产视频在线观看一区二区三区 | 乱中年女人伦av一区二区| 亚洲欧美日韩系列| 亚洲国产精品国自产拍av| 欧美大片一区二区三区| 欧美色图天堂网| 91一区二区在线| 福利电影一区二区| 国产福利一区在线| 激情av综合网| 久久精品国产免费| 日韩av一二三| 日韩国产高清在线| 亚洲第一成人在线| 亚洲一卡二卡三卡四卡五卡| 亚洲色图视频网| 国产精品国产三级国产普通话三级 | 欧美一区二区精品在线| 欧美性大战xxxxx久久久| 91在线观看地址| 成人黄色在线视频| 国产99精品国产| 成人avav在线| 91啪九色porn原创视频在线观看| 国产盗摄视频一区二区三区| 国产一区二区三区久久久| 欧美aⅴ一区二区三区视频| 秋霞午夜鲁丝一区二区老狼| 天使萌一区二区三区免费观看| 亚洲一区二区三区四区在线免费观看| 亚洲蜜桃精久久久久久久| 一区二区欧美视频| 亚洲国产中文字幕在线视频综合 | 成人开心网精品视频| 成人动漫一区二区在线| 成人午夜精品在线| 91视频国产观看| 欧美日韩亚州综合| 欧美人与禽zozo性伦| 91精品综合久久久久久| 91精品婷婷国产综合久久性色| 91麻豆精品国产91久久久资源速度 | thepron国产精品| 一本久久综合亚洲鲁鲁五月天| 国产欧美一区二区三区沐欲| 国产亚洲成年网址在线观看| 中文av一区二区| 亚洲品质自拍视频| 香蕉加勒比综合久久| 极品少妇xxxx精品少妇| 成人美女在线观看| 91在线免费看| 91精品国产入口| 久久久综合视频| 国产精品色噜噜| 一区二区成人在线| 日韩av一区二区三区四区| 国产九色精品成人porny| 成av人片一区二区| 欧美日韩国产首页| 精品国产一区二区三区四区四| 国产日韩欧美不卡在线| 亚洲青青青在线视频| 免费久久精品视频| 不卡的电影网站| 678五月天丁香亚洲综合网| 久久午夜电影网| 夜夜爽夜夜爽精品视频| 激情五月婷婷综合网| 91久久一区二区| 日韩你懂的电影在线观看| 国产精品国产三级国产aⅴ入口| 亚洲电影你懂得| 国产91精品免费| 欧美日韩国产经典色站一区二区三区| 久久午夜国产精品| 亚洲va欧美va天堂v国产综合| 久久av老司机精品网站导航| 91麻豆国产福利精品| 欧美本精品男人aⅴ天堂| 亚洲激情在线播放| 久久国产福利国产秒拍| 色婷婷av一区| 中文av一区二区| 久久99久国产精品黄毛片色诱| 99精品国产99久久久久久白柏| 欧美成人高清电影在线| 一区二区欧美精品| 不卡一区二区在线| 精品精品欲导航| 亚洲成人一区在线| www.久久精品| 国产欧美日韩视频在线观看| 奇米亚洲午夜久久精品| 欧美日韩一区二区欧美激情| 国产精品青草久久| 国内精品国产成人国产三级粉色| 欧美日韩aaa| 亚洲一区二区三区四区五区黄| 成人免费高清视频在线观看| 精品国产成人系列| 日本最新不卡在线| 欧美日韩一区二区在线观看| 亚洲视频1区2区| 播五月开心婷婷综合| 久久久久久久久伊人| 精品制服美女久久| 欧美一区二区三区成人| 亚洲国产欧美日韩另类综合| 日本道色综合久久| 自拍偷拍欧美精品| 不卡的电影网站| 欧美激情艳妇裸体舞| 国产福利精品一区二区| 久久人人97超碰com| 国产做a爰片久久毛片| 欧美一级生活片| 欧美aaa在线| 欧美xxxxxxxx| 九九在线精品视频| 26uuu国产在线精品一区二区| 精品影视av免费| 久久精品亚洲国产奇米99| 国产一区二区三区免费在线观看 | 亚洲欧美综合另类在线卡通| 成人黄色一级视频| 日韩久久一区二区| 91官网在线免费观看| 亚洲综合激情另类小说区| 色一情一伦一子一伦一区| 亚洲欧美日韩国产手机在线| 在线观看免费一区| 亚洲18色成人| 欧美一区二区三区四区在线观看| 免费在线看成人av| 精品久久国产字幕高潮| 懂色av中文一区二区三区| 亚洲人成网站影音先锋播放| 欧美色视频在线观看| 蜜桃一区二区三区在线| 久久综合视频网| 99久久精品免费看| 亚洲一级二级三级| 日韩欧美一区二区在线视频| 国产精品一区二区三区四区| 国产精品久久久久久福利一牛影视 | 狠狠色丁香久久婷婷综| 国产免费久久精品| 色狠狠色狠狠综合| 日本怡春院一区二区| 久久久99精品免费观看| 91香蕉视频mp4| 日韩福利视频导航| 国产亚洲欧美色| 在线精品视频小说1| 裸体健美xxxx欧美裸体表演| 国产日韩欧美制服另类| 色综合久久综合| 久久精品久久综合| 国产精品高潮呻吟| 欧美人狂配大交3d怪物一区| 黄网站免费久久| 亚洲日本一区二区| 欧美欧美欧美欧美| 国产精品羞羞答答xxdd | 国产乱码精品一区二区三| 亚洲日本在线观看| 精品蜜桃在线看| 91国产成人在线| 国产成a人亚洲| 午夜精品久久久久久久久久| 国产欧美日韩视频在线观看| 欧美日韩激情在线| 福利一区二区在线观看| 日本免费在线视频不卡一不卡二 | 一区二区三区免费看视频| 日韩欧美国产综合一区 | 制服丝袜成人动漫| 91免费小视频| 黄色小说综合网站| 五月婷婷激情综合网| 亚洲天堂免费在线观看视频| 精品国产青草久久久久福利| 欧美一a一片一级一片| 国产91精品在线观看| 美女脱光内衣内裤视频久久网站| 亚洲免费观看高清在线观看| 国产欧美视频一区二区三区|