Linux下的網路程式設計(一)TCP程式設計

2021-08-10 06:28:42 字數 2028 閱讀 3781

伺服器與客戶端的概念:

伺服器: 在一次通訊中,提供資料的為伺服器

客戶端: 在一次通訊中,獲取資料的為客戶端

協議的選擇(兩種不同的協議有兩種不同的程式設計方式):

tcp: 面向連線的(不斷傳送資料)可靠的(資料完整,例如銀行交易往來資料)流式服務

關於tcp 的程式設計流程:

server:      socket(開啟網路介面)bind(將伺服器的ip位址與埠號與socket繫結)listen(監聽連線)accept(拿出乙個連線)recv/send(收發資料)close(關閉連線)

client:       socket        /*bind*/(可要可不要)connect(發起連線)recv/send      close

int socket(int domain, int type, int protocol);

domain::  協議簇 af_inet

type::  選擇協議 sock_stream(tcp)  sock_dgram(udp)

protocol::  0

int bind(int sockfd, struct sockaddr *addr, int addrlen);

addr:: 指定 ip 位址和埠號

addrlen::位址長度

struct sockaddr_in

struct in_addr

int listen(int sockfd, int size);

int accept(int sockfd, struct sockaddr *addr, int *addrlen);//可能會阻塞

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

addr:: 要連線的伺服器的 ip 位址和埠號

命令:netstat -atp               顯示本機上所有的 tcp 服務程式以及其占用的埠號

具體實現**:

伺服器:

#include#include#include#include#include#include#include#includevoid  main()

; recv(c,buff,127,0); //獲取的物件、資料、多少位元組、屬性

printf("recv::%s\n",buff);

send(c,"i know",strlen("i know"),0);

close(c);

close(sockfd);

}

客戶端:

#include#include#include#include#include#include#include#includevoid main()

; recv(sockfd,buff,127,0);

printf("recv::%s\n",buff);

close(sockfd);

}

執行時先執行伺服器後執行客戶端,執行結果如下:

Linux下TCP網路程式設計流程

常見的兩種模型 c s模型 客戶端 伺服器端 和ptp 點對點 模型。下面為tcp網路流程程式設計兩台主機之間資料傳送的具體 示例。示例 檔案server.c include include include include include include include include void m...

Linux 網路程式設計 TCP

一 tcp通訊步驟 tcp伺服器部分 1 呼叫函式socket 建立乙個socket 2 設定sockaddr in資訊,如要連線伺服器的ip和埠等屬性 3 呼叫函式bind 繫結ip位址 埠等資訊到socket上 4 呼叫函式listen 設定允許的最大連線數 5 呼叫函式accept 等待來自客...

Linux 網路程式設計(TCP)

include include include include include include include include int main int argc,char argv bzero server addr,sizeof struct sockaddr in server addr.si...