學習socket通訊總結(一)

2021-07-11 21:34:32 字數 2810 閱讀 1447

最近一直在用linux,很早就想學習linux網路程式設計。

今天剛好抽出一段時間,學習了簡單的socket通訊,寫了乙個簡單的客戶端/伺服器通訊**。現在將今天學習的內容做乙個總結。

一、相關概念說明

struct sockaddr

;

struct sockaddr_in

;

int socket (int domain, int type, int protocol);
引數介紹:domain協議族、type指定服務型別、protocol在前兩個引數構成的協議族集合下,選擇乙個具體的協議,一般為0。

int bind (int fd, const struct sockaddr* addr, socklen_t len);

int listen(int sockfd, int backlog);
引數介紹:backlog引數提示核心監聽佇列的最大長度,即可以最大連線數量。

int accept (int fd, struct sockaddr* addr, socklen_t * addr_len);

5.發起連線

int connect (int fd, const struct sockaddr* addr, socklen_t len);

6.關閉連線

int close(int fd);

7.讀寫操作

#include #include #include #include #include #include #include int main()

printf("socket success!\n");

memset(&saddr, 0, sizeof(struct sockaddr_in));

saddr.sin_family = af_inet;

saddr.sin_addr.s_addr = inet_addr("127.0.0.1");

saddr.sin_port = htons(5500);

if( -1 == connect(sockfd, (struct sockaddr *)(&saddr), sizeof(struct sockaddr)) )

printf("connect success!\n");

while(i)

// printf("send success\n");

if( -1 == write(sockfd, "hello", 32))

printf("write success\n");

i -= 1;

} close(sockfd);

return 0;

}

#include #include #include #include #include #include #include #include int main()

; int recbytes = 0;

struct sockaddr_in saddr, caddr;

int sockfd = socket(af_inet, sock_stream, 0);

if ( -1 == sockfd )

printf("socket success!\n");

memset(&saddr, 0, sizeof(struct sockaddr_in));

saddr.sin_family = af_inet;

saddr.sin_addr.s_addr = inet_addr("127.0.0.1");

saddr.sin_port = htons(5500);

if( -1 == bind(sockfd, (struct sockaddr *)(&saddr), sizeof(struct sockaddr)))

printf("bind success!\n");

if( -1 == listen(sockfd,5))

printf("listen success!\n");

recbytes = sizeof(struct sockaddr_in);

nfp = accept(sockfd, (struct sockaddr *)(&caddr), &recbytes);

if( -1 == nfp )

printf("accept success\n");

while(1)

// if( 0 == res )

//

// recbytes = strlen(buf);

// buf[recbytes] = '\0';

// printf("%s\n", buf);

// recbytes = read(nfp, buf, 255);

if( -1 == recbytes )

if( 0 == recbytes )

printf("read data success!\n");

buf[recbytes] = '\0';

printf("%s\n", buf);

} getchar();

close(sockfd);

return 0;

}

先介紹這麼多,下次有時間在繼續學習socket程式設計。

Socket通訊總結

socket通訊總結 一 socket的使用場景 二 本地的程序通訊 網路上的程序通訊 三 socket的定義 四 socket的基本操作 1 socket 函式 2 bind 函式 3 listen connect 函式 4 accept 函式 5 read,write 函式 6 close 函式...

非同步Socket通訊總結

服務端 非同步 using system.net using system.net.sockets using system.io using system.text using system.threading public static manualresetevent alldone new ...

非同步Socket通訊總結

前面已經貼了socket的基本程式設計要點和步驟,這裡繼續貼一下關於非同步socket通訊的 服務端 非同步 using system.net using system.net.sockets using system.io using system.text using system.thread...