自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

網(wǎng)絡(luò)編程之TCP-IP socket編程

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
兩個(gè)網(wǎng)絡(luò)程序之間需要通信就需要在他們之間建立一個(gè)鏈接通道,這個(gè)通道就是由一個(gè)五元組組成。即是:協(xié)議、本地IP地址、本地端口號(hào)、遠(yuǎn)程IP地址、遠(yuǎn)程端口號(hào)。

兩個(gè)網(wǎng)絡(luò)程序之間需要通信就需要在他們之間建立一個(gè)鏈接通道,這個(gè)通道就是由一個(gè)五元組組成。

五元組:(協(xié)議、本地IP地址、本地端口號(hào)、遠(yuǎn)程IP地址、遠(yuǎn)程端口號(hào))

socket編程原理

socket套接口

網(wǎng)絡(luò)程序之間通信是依靠socket套接口進(jìn)行通信。

例如:主機(jī)A上面的QQ程序需要發(fā)送消息到主機(jī)B上面的QQ,步驟就是:

①主機(jī)A上面的QQ發(fā)消息存到主機(jī)A上面的socket中

②這個(gè)socket通過(guò)主機(jī)A的網(wǎng)絡(luò)管理軟件通過(guò)網(wǎng)絡(luò)接口卡傳到主機(jī)B中得網(wǎng)絡(luò)接口卡

③主機(jī)B的網(wǎng)絡(luò)接口卡接收到消息后再傳給主機(jī)B的網(wǎng)絡(luò)管理軟件再傳到主機(jī)B的socket中。

④然后主機(jī)B中得QQ讀取socket中得信息

套接口分類(lèi)

①流式套接口(SOCK_STREAM)可靠的面向連接的數(shù)據(jù)傳輸服務(wù)(適用于TCP)

②數(shù)據(jù)報(bào)套接口(SOCK_DGRAM)無(wú)連接不可靠的雙向數(shù)據(jù)傳輸服務(wù)(使用與UDP)

③原始套接口(SOCK_RAM)很少用

socket編程原理

①服務(wù)端調(diào)用socket()函數(shù)開(kāi)啟一個(gè)服務(wù),就是創(chuàng)建一個(gè)套接口

②這個(gè)socket條用bind()函數(shù)把一個(gè)端口跟這個(gè)socket綁定

③調(diào)用listen()函數(shù)監(jiān)聽(tīng)客戶(hù)端的請(qǐng)求

④客戶(hù)端也調(diào)用socket()函數(shù)穿件一個(gè)請(qǐng)求服務(wù)的套接口,然后調(diào)用connect()函數(shù)請(qǐng)求連接

⑤服務(wù)端調(diào)用accept()函數(shù)接收請(qǐng)求連接,然后使用recv()函數(shù)從套接口讀數(shù)據(jù),調(diào)用send()函數(shù)向套接口發(fā)送數(shù)據(jù)

⑥關(guān)閉套接口資源#p#

winsock API套接口連接的建立

①WSAStartup()檢查協(xié)議棧的安裝情況

②socket()函數(shù)創(chuàng)建套接口socket

SOCKET socket (
int af,//地址族AF_INET
int type,//套接口類(lèi)型SOCK_STREAM(TCP),SOCK_DGRAM(UDP)
int protocol//協(xié)議字段IPPROTO_TCP, IPPROTO_UDP
)12345

③bind()綁定本地地址,就是把一個(gè)套接口與主機(jī)地址和端口號(hào)聯(lián)系起來(lái)。沒(méi)有錯(cuò)誤返回0

int bind(
SOCKET s,//套接口
const struct sockaddr FAR* name,//IP地址和端口地址
int namelen//地址參數(shù)的長(zhǎng)度
)12345

關(guān)于地址參數(shù)

struct sockaddr_in {
short sin_family;//必須是AF_INET
u_short sin_port;//16位端口號(hào)
struct in_addr sin_addr;//IP地址
char sin_zero[8];//一般是0
}123456

④監(jiān)聽(tīng)連接 listen() 當(dāng)一個(gè)套接口創(chuàng)建好后,然后綁定好,就該調(diào)用listen()函數(shù)監(jiān)聽(tīng)連接請(qǐng)求了,沒(méi)有錯(cuò)誤返回0

int listen(
SOCKET s,//已綁定了地址,還沒(méi)有建立連接的套接口
int backlog//指定正在等待連接的***隊(duì)列長(zhǎng)度
)1234

⑤請(qǐng)求連接connect() 客戶(hù)端套接口創(chuàng)建好以后就可以調(diào)用這個(gè)函數(shù)進(jìn)行連接

int connect(
SOCKET s,
const struct sockaddr FAR* name,
int namelen
)12345

⑥接收連接accept() 服務(wù)器接收客戶(hù)端的連接請(qǐng)求

SOCKET accept(
SOCKET s,//處于監(jiān)聽(tīng)狀態(tài)的套接口
struct sockaddr FAR* addr,//用來(lái)存放發(fā)出連接的那個(gè)客戶(hù)端的IP地址信息
int FAR* addrlen//客戶(hù)端接口地址的長(zhǎng)度
)12345

#p#

winsock API基本數(shù)據(jù)傳輸

TCP使用的數(shù)據(jù)傳輸函數(shù)

①send()函數(shù),在已連接的套接口上發(fā)送數(shù)據(jù)

int send(
SOCKET s,//已建立連接的套接口
const char FAR*buf,//字符緩沖區(qū),內(nèi)有將要發(fā)送的數(shù)據(jù)
int len,//即將發(fā)送的緩沖區(qū)的字符數(shù)
int flags//控制傳輸方式,可以是0
)123456

②recv()函數(shù),從套接口接收數(shù)據(jù)

int recv(
SOCKET s,//已建立的套接口
char FAR* buf,//用于接收數(shù)據(jù)的緩沖區(qū)
int len,//緩沖區(qū)的長(zhǎng)度
int flags//調(diào)用方式 ,正常為0
)123456

UDP使用的數(shù)據(jù)傳輸函數(shù)

①recvfrom()接收數(shù)據(jù)

int recvfrom(
SOCKET s,//一個(gè)套接口
char FAR* buf,//接收數(shù)據(jù)的緩沖區(qū)
int len,//緩沖區(qū)長(zhǎng)度
int flags,//調(diào)用操作方式
struct sockaddr FAR* from//源地址,向誰(shuí)要信息
int FAR* fromlen//
)12345678

②sendto()發(fā)送數(shù)據(jù)

int sendto(
SOCKET s,//套接口
const char FAR* buf,//將要發(fā)送數(shù)據(jù)的緩沖區(qū)
int len,//buf緩沖區(qū)長(zhǎng)度
int flags,//調(diào)用方式
const struct sockaddr FAR* to,//目的套接口地址
int tolen//to所指地址長(zhǎng)度
)12345678

#p#

winsock API連接與關(guān)閉套接口

①shutdown()關(guān)閉讀寫(xiě)通道

shutdown(
SOCKET s,//套接口
int how//關(guān)閉時(shí)禁止那種操作
)1234

②colsesocket()關(guān)閉套接口

int closesocket(
SOCKET s
)123

③WSACleanup()終止使用winsock

int WSACleanup();
責(zé)任編輯:藍(lán)雨淚 來(lái)源: CSDN博客
相關(guān)推薦

2019-11-08 14:47:49

TCPIP網(wǎng)絡(luò)

2019-09-18 20:07:06

AndroidTCP協(xié)議

2014-11-21 09:16:23

TCPIP

2012-03-19 11:41:30

JavaSocket

2010-03-03 16:19:29

Python Sock

2015-10-21 10:24:05

TCPIP網(wǎng)絡(luò)協(xié)議

2013-03-27 13:26:04

Android開(kāi)發(fā)Socket

2020-11-06 18:51:17

LinuxTCP服務(wù)器

2012-09-24 15:13:50

C#網(wǎng)絡(luò)協(xié)議TCP

2019-02-17 10:05:24

TCPSocket網(wǎng)絡(luò)編程

2015-10-19 09:34:42

TCPIP網(wǎng)絡(luò)協(xié)議

2015-10-16 09:33:26

TCPIP網(wǎng)絡(luò)協(xié)議

2016-11-04 21:37:16

PythonSocket

2012-03-19 10:55:27

JavaSocket

2019-02-12 15:04:09

2015-05-28 10:47:38

Unix網(wǎng)絡(luò)編程TCP

2012-03-01 20:32:29

iOS

2015-10-27 09:40:31

TCPIP網(wǎng)絡(luò)協(xié)議

2024-08-13 08:27:24

PythonTCP協(xié)議網(wǎng)絡(luò)編程

2013-03-26 12:46:23

Android開(kāi)發(fā)So
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)