91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

網絡編程學習

發布時間:2020-06-04 23:36:38 來源:網絡 閱讀:581 作者:漫步Linux 欄目:網絡安全



========================================================
        網絡編程
========================================================
1,網絡通信:
操作系統進程間的通信UNIX BSD:管道(pipe)、有名管道、信號(signal)
UNIX system V: 消息(message)、共享存取區(shared memory)、信號量(semaphore)
他們都只能進行進程間的通信,因此網間的通信使用的是TCP/IP網絡協議,最常用的
編程接口是: UNIX BSD(套接字)SOcket、UNIX SYstem V的TLI(已經淘汰)
即SOcket---->套接字

2,TCP/IP、UDP協議
TCP/IP:傳輸控制協議,為廣域網而設計的。

UDPUser Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是屬于TCP/IP協議族中的一種。如圖:

網絡編程學習

 TCP/IP協議存在于OS中,網絡服務通過OS提供,在OS中增加支持TCP/IP的系統調用——Berkeley套接字,如SocketConnectSendRecv

 TCP/IP協議族包括運輸層、網絡層、鏈路層,而socket所在位置如圖,Socket是應用層與TCP/IP協議族通信的中間軟件抽象層。

網絡編程學習

物理結構:應用層---->運輸層----->網絡層----->鏈路層(一般四層),細分為:七層結構
SOcket: 是應用層和運輸層間通信的抽象層

3,SOcket:
 1)服務器:先初始化SOcket----->端口綁定(bind)----->對端口進行監聽(listen)---->調用accept組             塞------>等待客戶連接
 2)客戶端:初始化SOcket------->連接服務器(connect)---->連接成功則通信開始(客戶端發送數據請           求,服務器接受請求并處理請求;回發數據給客戶端,客戶端讀取數據,關閉連接)初始化

SOcket: int socket() 返回socketfd(描述符)
bind: int bind() 進行客戶端ip的綁定(IP地址+端口號)
網絡字節序:小端模式(低字節在高位)綁定時必須進行字節序轉化

listen: 監聽socket  listen(int socktefd, int backlog); backlog: socket最大連接個數
connect: connect(int sockfd, const struct sockaddr *add, socklen_t addrlen) : 第二個參數是服務器的ip地址


4,socket創建TCP經過三次握手:請求--->應答---->確認
  TCP接收終止:四次握手釋放

sercer.c:

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
int main(int argc ,char **argv)
{
    int sockfd = socket(AF_INET, SOCK_STREAM, 0);
    struct sockaddr_in saddr, caddr;
    memset(&saddr, 0, sizeof(saddr));
    saddr.sin_family = AF_INET;
    saddr.sin_port = htons(atoi(argv[1]));
    saddr.sin_addr.s_addr = INADDR_ANY;
    /************定端口號和IP***/
    if(bind(sockfd, (struct sockaddr *)&saddr,sizeof(struct sockaddr)) == -1)
    printf("bind is error\n");
    /************監聽**************/
    if(listen(sockfd, 5) == -1)
    printf("listen is error\n");    
    printf("LINE : %d\n", __LINE__);
    int size = sizeof(struct sockaddr);
    /************接受連接請求**************/
    printf("connet\n");
    int newsockfd = accept(sockfd, (struct sockaddr *)&caddr, &size);
    if(newsockfd == -1)
    printf("accept is error\n");
    printf("connet\n");
    close(sockfd);
    close(newsockfd);    
    return 0;
}

client.c:

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>

int main(int argc,char**argv)
{
    int sockfd = socket(AF_INET, SOCK_STREAM, 0);
    struct sockaddr_in saddr, caddr;
    memset(&saddr, 0, sizeof(saddr));
    saddr.sin_family = AF_INET;
    saddr.sin_port = htons(atoi(argv[2]));
    saddr.sin_addr.s_addr = inet_addr(argv[1]);
    /************定端口號和IP***/
    printf("LINE : %d\n", __LINE__);
    int size = sizeof(struct sockaddr);
    /************接受連接請求**************/
    int ret = connect(sockfd,(struct sockaddr*)&saddr,sizeof(struct sockaddr));
    if(ret == -1)
    printf("accept is error\n");
    perror("connet");
    close(sockfd);
    return 0;
}




------------------------------------------------------------完成:2015年4月13日

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新巴尔虎左旗| 通州区| 咸丰县| 瑞丽市| 筠连县| 墨竹工卡县| 吴桥县| 赤城县| 习水县| 马鞍山市| 沾化县| 淅川县| 漾濞| 溧水县| 吉木乃县| 菏泽市| 靖西县| 文水县| 宜兴市| 江陵县| 叙永县| 桓仁| 饶阳县| 衡水市| 乌拉特前旗| 桑植县| 卢氏县| 都江堰市| 海南省| 大新县| 巢湖市| 平阴县| 启东市| 晋中市| 岐山县| 龙南县| 同心县| 邹平县| 银川市| 漳州市| 哈巴河县|